dポイントプレゼントキャンペーン実施中!

<c++です>こんばんは、宜しくお願い致します。

> class CSample
> {
> public:
> CSample(){ m_num = 123; } // コンストラクタ
> int& get(){ return m_num; } // メンバ変数を参照戻し
> private:
> int m_num;
> };

>(1) int& alias1 = get();
>(2) alias1 *= 2;
>(3) int& alias2 = get() + alias1; // このようにブロックの途中で宣
>言できるとできます。

あるサイトで↑のようなサンプルプログラムがあるのですが(1)は分かるのですが(参照の初期化をしている)、(3)の動作が分かりません。参照の初期化みたいですが、参照型の戻り値get()に変数alias1を足しているのですがそれを別の参照alias2の初期化みたいになっており理解できません。教えてください。

A 回答 (1件)

あれ? これってできたっけ? コンパイルエラーになりそうな気がする.


一応いっておくと, この例でも
const int &alias2 = get() + alias1;
は正当です. 右辺の値を計算して (メモリ上の) どこかに保存し, そこへの参照として alias2 を定義するだけだから.
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。とてもよく分かりました。

お礼日時:2009/04/05 01:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!