- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ポインタの代入の省略について)
ポインタの代入の省略について
このQ&Aのポイント
- C++のポインタの代入について説明してください
- Base* const sensor(mSensors[0]);とBase* const sensor = mSensors[0];は同意ですか?
- ポインタの代入の記述法(XX法)について説明している参考書やWebページを教えてください
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
名前は特についていなかったと思います。 ポインタに限らず、全ての組み込み型で使えます。 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); 上はコンストラクタのみ。 下はコンストラクタ→コピーコンストラクタの順で呼ばれます。
その他の回答 (3)
- jacta
- ベストアンサー率26% (845/3158)
回答No.4
> このような記述法に名前(XX法)はついているのでしょうか? = mSensors[0]の部分の呼称ということであれば、「初期化子(initializer)」です。
質問者
お礼
ご回答ありがとうございました。
- YanenoSuzume
- ベストアンサー率44% (23/52)
回答No.2
コンストラクタ(構築子)と呼ぶようです。 すみませんが詳しいことはよくわかりません。何かで調べてください。 参考文献 C言語とC++,鑰山徹,1991,工学図書
質問者
お礼
ありがとうございます!
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.1
お礼
ありがとうございます!
補足
ご回答ありがとうございます。 >int n = 0; >int n(0); >組み込み型については、この二つの記法の意味は全く同じです これです!!まさにこれなんです。 現在、linux上で開発をおこなっているのですが、 C++だと int n=0は、int n(0)のようにも記述できるんですね。 C言語だと、コンパイルエラーになってしまいます。 C++に関する書籍はもっていますが、このような記述に ついての説明はまったくありませんでした。 これって、明らかにコンストラクタではないですよね? 他の回答者が書いておられる、初期化子というものでしょうか? ネットで検索しても、このような記述については触れられていません でした。