ページ 1 / 1
C++ クラスのインスタンス?
Posted: 2017年12月09日(土) 01:44
by いくぞ、55
C++を勉強中です
クラスのインスタンス化(?)の時に
class Hoge; があったとして
コード:
class Huga {
Hoge hoge;
Hoge* hoge = new hoge();
~Huga() {
delete hoge;
}
};
の2通りの使い分けがわかりません。
「.」と「->」で使うのはわかるのですが、「.」でしか使えない場合(逆も然り)があるのかどうかというところがわからないです。
機械的に「全ての場合でこっちを使えば問題ない」ということであれば非常にわかりやすいのですが…
Re: C++ クラスのインスタンス?
Posted: 2017年12月09日(土) 12:47
by V30
は、
hoge->メンバ変数(関数)
のように指定できないし、
コード:
Hoge* hoge = new hoge();
は、
hoge.メンバ変数(関数)
のように指定できません。
コンパイルエラーになります。[VS2017の場合]
必ず、
オブジェクト型「Hoge」は「.」、
ポインター型は「Hoge*」は「->」
を使うようにしましょう。
オフトピック
例外として、
オブジェクト型「Hoge」でも「->」が使える
パターンがありますが[operator->関数]、
その時はその時で質問しましょう。
Re: C++ クラスのインスタンス?
Posted: 2017年12月09日(土) 13:50
by manntera
Re: C++ クラスのインスタンス?
Posted: 2017年12月09日(土) 14:21
by V30
ちょっと質問からズレた返答でした(汗)
どっちの型でもいいんですが、初心者の内は、
なるべく片方だけ使いましょう。
オブジェクト型のほうが安心です。
後々ポインター云々も覚えなきゃいけないので、
ちょっと安全ではないポインター型主体で勉強
してみる手もありです。
取りあえずは全く同じものと考えてもよいので、
悩むことはないと思います。
ご自身のやりやすいほうで、、、
Re: C++ クラスのインスタンス?
Posted: 2017年12月09日(土) 17:54
by いくぞ、55
ありがとうございました!
ポインタはまだよくわかっていないので、「.」を使うほうでやっていきたいと思います