2016-08-06 23 views
0

私はC++プライマー第5版からエクササイズ2.27をやっていると私はこの質問で混乱しています:C++入門演習2.27 [第5版]

演習:合法的な以下の初期化のを?理由を説明。

(c)const int i = -1,& r = 0;

私は、これは以下と同じになりますので、違法であるrの結論に達した:

const int i = -1; 
int &r = 0; 

しかしthis github repo(c)は以下のように同じであることを示唆している:

const int i = -1; 
const int &r = 0; 

だから、それを私の答えに矛盾する、私に正しい答えを提供してください。

P.S .:私はC++言語で始まっています。

+0

を書くことができしかし

_「私はC++言語でbegineerいます。」_次にスタックオーバーフローは、おそらくあなたのための間違った場所です。 –

+0

答えは間違っていると思いますか?この質問は、あなたが間違っていたことを意味するので、単に答えを無視することを選んだだけになります。 – hvd

+3

コンパイラが 'std :: is_same'と' decltype'を使ってあなたと同意しているかどうかを確認することができます:http://coliru.stacked-crooked.com/a/c0bb0ba07726c1e6 – milleniumbug

答えて

1

修飾子(const)を有するタイプ指定子(intを)宣言

const int i = -1, &r = 0; 

内のすべての宣言子に属するしたがってi&rが型指定及び修飾子const intを有する宣言子。 (この場合は式0で)一時オブジェクトを非一定の基準に結合されなくてもよいので また、あなたは、例えば

int &r = 0; 

を書き込まないことができます。あなたは

int &&r = 0; 
+0

これは 'volatile'修飾子にも当てはまりますか? – silverwolf

+0

@silverwolfこれはcv修飾子に適用されます。 –

関連する問題