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

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

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

#1

投稿記事 by いくぞ、55 » 7年前

C++を勉強中です

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

class Hoge; があったとして

コード:

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

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

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

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

アバター
V30
記事: 21
登録日時: 10年前
住所: 岡山県

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

#2

投稿記事 by V30 » 7年前

コード:

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

コード:

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

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

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

危ない危ない。
ちゃんとした人に質問しましょう。
ちなみに私は、ちゃんとしていない素人です。

manntera
記事: 13
登録日時: 11年前

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

#3

投稿記事 by manntera » 7年前

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

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

アバター
V30
記事: 21
登録日時: 10年前
住所: 岡山県

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

#4

投稿記事 by V30 » 7年前

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

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

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

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

危ない危ない。
ちゃんとした人に質問しましょう。
ちなみに私は、ちゃんとしていない素人です。

いくぞ、55

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

#5

投稿記事 by いくぞ、55 » 7年前

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

返信

“C言語何でも質問掲示板” へ戻る