C++ クラスのインスタンス?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: C++ クラスのインスタンス?

Re: C++ クラスのインスタンス?

#5

by いくぞ、55 » 7年前

ありがとうございました!
ポインタはまだよくわかっていないので、「.」を使うほうでやっていきたいと思います

Re: C++ クラスのインスタンス?

#4

by V30 » 7年前

ちょっと質問からズレた返答でした(汗)

どっちの型でもいいんですが、初心者の内は、
なるべく片方だけ使いましょう。
オブジェクト型のほうが安心です。

後々ポインター云々も覚えなきゃいけないので、
ちょっと安全ではないポインター型主体で勉強
してみる手もありです。

取りあえずは全く同じものと考えてもよいので、
悩むことはないと思います。
ご自身のやりやすいほうで、、、

Re: C++ クラスのインスタンス?

#3

by manntera » 7年前

ポインタだとこんな芸当が出来たりする。

https://qiita.com/Riyaaaa_a/items/887f6190e710c6410994

Re: C++ クラスのインスタンス?

#2

by V30 » 7年前

コード:

Hoge  hoge;
は、
hoge->メンバ変数(関数)
のように指定できないし、

コード:

Hoge* hoge = new hoge();
は、
hoge.メンバ変数(関数)
のように指定できません。

コンパイルエラーになります。[VS2017の場合]

必ず、
オブジェクト型「Hoge」は「.」、
ポインター型は「Hoge*」は「->」
を使うようにしましょう。
オフトピック
例外として、
オブジェクト型「Hoge」でも「->」が使える
パターンがありますが[operator->関数]、
その時はその時で質問しましょう。

C++ クラスのインスタンス?

#1

by いくぞ、55 » 7年前

C++を勉強中です

クラスのインスタンス化(?)の時に

class Hoge; があったとして

コード:

class Huga {
       Hoge  hoge;
       Hoge* hoge = new hoge();

      ~Huga() {
             delete hoge;
       }
};
の2通りの使い分けがわかりません。

「.」と「->」で使うのはわかるのですが、「.」でしか使えない場合(逆も然り)があるのかどうかというところがわからないです。

機械的に「全ての場合でこっちを使えば問題ない」ということであれば非常にわかりやすいのですが…

ページトップ