1

参照変数の概念を理解しています。これは、他の変数のエイリアスです。

int varA = 100;
int &varB = varA;  

varBこれは を参照してvarAおり、両方とも同じメモリ位置を指しています。1 つの変数への変更は、他の変数に反映されます。

質問:

  1. a)int &c = 100;
    上記の文の意味は何ですか? また、次の文とどのように違いますか?
    b)int c = 100;

  2. 1(b) ではなく 1(a) を使用する必要があるシナリオはありますか?

4

4 に答える 4

3

これを除いて、すべて正しいです:

int &c = 100; //error

C++03 と C++11 の両方でコンパイル エラーが発生します。これは、非 const 参照100を許可されていない一時オブジェクト (から作成された) にバインドしようとするためです。

ただし、C++11 ではこれを行うことができます。

int && c = 100; //ok

これは右辺値参照と呼ばれます。

ただし、 const 参照を一時的にバインドできます (C++03 と C++11 の両方):

int const & c = 100;

-

int c = 100;

というオブジェクトを定義し、cで初期化するだけ100です。ここでは参照しません。

于 2012-06-26T07:19:09.120 に答える
3
 int &c = 100

は無効なコードです。非 const 参照を一時にバインドすることはできません。

const有効にするには、参照が必要です。

 const int &c = 100;

その間、

int c = 100

有効なコードです。c型の名前付き変数を作成し、intで初期化し100ます。

于 2012-06-26T07:19:15.103 に答える
2

1)int& c = 100;は違法ですが、2 番目のものは違法ではありません。

参照変数の概念を理解しました。

参照を本当に理解していれば、実行後c = 101に定数100が突然 に変わることを期待しています101か?

2) 1) は違法なので、答えても意味がありません。

于 2012-06-26T07:19:01.817 に答える
2
int& i = 100;

違法です。

次のように言うのは合法です。

int const& i = 100;
const int& i = 100; // same as above

このコンテキストでは特に有用ではありませんが、関数呼び出しの目的で機能する必要があります。

    void foo(int const& i) { ... }
...
    foo(100);
于 2012-06-26T07:24:11.453 に答える