4

重複の可能性:
const 参照に int を割り当てることができますか?

の間に微妙な違いはありますか

const int& value = 12;

const int value = 12;

コンパイル時?どのように?

4

3 に答える 3

2
int value = 12; 

ここで「値」は値変数です。

どこで int& は、他の変数への参照変数(エイリアス)を作成するために使用されます。お気に入り

int i;  
int& j=i;

j と i は同じメモリ位置を参照します。it c++ concept.

ただし、参照変数はメモリ ロケーションに対して作成できません。したがって、私の考えでは、次の式はエラープロンプトです

int& i = 12;  `Will not compile even.`    

constについて:

constキーワードは、読み取り専用変数を作成するために使用されます。初期化されると、変数の値は変更できません。次のコードを検討してください。

const int x = 2;  // const var can be initialized, not modified thereafter
x = 10;           // error - cannot modify const variable

エラー: エラー: 読み取り専用変数 'x' の割り当て

また、式は型の両側で const を使用できます。

 const int value = 12;
 int const value = 12;

どちらの式も同じです (単純な非ポインター データ型の場合)。ここから学ぶ 参照を目にする最も一般的な場所は、関数の引数または戻り値です。

参照変数を持つ const :

テンポラリーが作成され、それへの参照をバインドすることは合法ですが、それを non- oneconstにバインドすることは違法です。const

それはちょうどのようなものです:

const int& reference_to_const_int = int(20);  //LEGAL
      int& reference_to_const_int = int(20);  //ILLEGAL

const参照は一時的なものの寿命を延ばすため、これが機能します。それは単なる言語のルールです。(ここから学びました)

于 2012-10-11T04:29:31.970 に答える
0

1 つ目は数値が割り当てられた const-reference で、2 つ目は数値が割り当てられた const 左辺値です。どちらも「値」のユーザーが変更できないため、使用上の観点からは違いはありません。
通常、参照は宣言された型のオブジェクトのエイリアスであるという点で、コンパイラは参照を明らかに異なる方法で扱います。この場合、変数名のない番号が参照に割り当てられます。

于 2012-10-11T01:08:27.713 に答える
-1

この質問の説明を参照してください。

したがって、次のようなコードを記述できます。

void f( const string & s ) {
}

( "foobar" );

このような不完全な回答をしたために反対票を投じられたようです。しかし、この質問は本質的に私がリンクしたものと重複しています。

その質問の違いを説明するためのより詳細な情報があります。

于 2012-10-11T00:53:32.143 に答える