• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ポインタの代入の省略について)

ポインタの代入の省略について

このQ&Aのポイント
  • C++のポインタの代入について説明してください
  • Base* const sensor(mSensors[0]);とBase* const sensor = mSensors[0];は同意ですか?
  • ポインタの代入の記述法(XX法)について説明している参考書やWebページを教えてください

質問者が選んだベストアンサー

  • ベストアンサー
  • axsies
  • ベストアンサー率64% (38/59)
回答No.3

名前は特についていなかったと思います。 ポインタに限らず、全ての組み込み型で使えます。 int foo(1); float bar(0.0f); Base& base( Base(0) ); など…。 おそらく、コンストラクタ初期化子やnew演算子での初期化子指定、例外でのthrowなどとの一貫性を保つために出来た仕様だと思われます。 class Base { public:  Base(int n)   : m_n(n) // ←コンストラクタ初期化子  { }  int m_n; }; int* pValue = new int(0); // ←組み込み型でもクラスのように書いて初期化できる。 throw int(0); // 組み込み型を例外で投げることは普通しませんけど…。 int n = 0; int n(0); 組み込み型については、この二つの記法の意味は全く同じです。 ただ若干蛇足ですが、クラスの場合は意味が異なりますので注意が必要です。 Base base(0); Base base = Base(0); 上はコンストラクタのみ。 下はコンストラクタ→コピーコンストラクタの順で呼ばれます。

mana_Gothic
質問者

お礼

ありがとうございます!

mana_Gothic
質問者

補足

ご回答ありがとうございます。 >int n = 0; >int n(0); >組み込み型については、この二つの記法の意味は全く同じです これです!!まさにこれなんです。 現在、linux上で開発をおこなっているのですが、 C++だと int n=0は、int n(0)のようにも記述できるんですね。 C言語だと、コンパイルエラーになってしまいます。 C++に関する書籍はもっていますが、このような記述に ついての説明はまったくありませんでした。 これって、明らかにコンストラクタではないですよね? 他の回答者が書いておられる、初期化子というものでしょうか? ネットで検索しても、このような記述については触れられていません でした。

その他の回答 (3)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.4

> このような記述法に名前(XX法)はついているのでしょうか? = mSensors[0]の部分の呼称ということであれば、「初期化子(initializer)」です。

mana_Gothic
質問者

お礼

ご回答ありがとうございました。

回答No.2

コンストラクタ(構築子)と呼ぶようです。 すみませんが詳しいことはよくわかりません。何かで調べてください。 参考文献 C言語とC++,鑰山徹,1991,工学図書

mana_Gothic
質問者

お礼

ありがとうございます!

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

特に説明があるわけではありませんが 01 の方をどうぞ.

参考URL:
http://www.jisc.go.jp/app/pager?id=74674
mana_Gothic
質問者

お礼

ありがとうございます!

関連するQ&A