2016-08-06 4 views
0

Je fais l'exercice de 2,27 5ème édition C++ primaire et je suis confus dans cette question:C++ exercice Primaire 2,27 [. 5ème ed]

Exercice: Laquelle des initialisations suivantes sont légales? Expliquer pourquoi.

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

Je suis venu à la conclusion que r est illégale parce que ce sera le même que ci-dessous:

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

Mais this github repo suggèrent que (c) est le même que ci-dessous:

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

Ainsi, il contredit à ma réponse, s'il vous plaît fournissez-moi la bonne réponse.

P.S .: Je suis débutant en langage C++.

+0

_ "Je suis begineer en langage C++." _ Puis Stack Overflow est probablement le mauvais endroit pour vous. –

+0

Qu'est-ce qui vous fait penser que cette réponse pourrait être fausse? Cette question apparaît comme étant simplement que vous choisissez de ne pas tenir compte de cette réponse, car l'accepter signifierait que vous avez eu tort. – hvd

+3

Vous pouvez vérifier si le compilateur est d'accord avec vous en utilisant 'std :: is_same' et' decltype': http://coliru.stacked-crooked.com/a/c0bb0ba07726c1e6 – milleniumbug

Répondre

1

Le spécificateur de type (int) avec le qualificatif (const) appartiennent à tous déclarateurs dans la déclaration

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

déclarateurs Ainsi i et &r ont le spécificateur de type et de qualification const int. En outre, vous ne peut pas écrire par exemple

int &r = 0; 

parce qu'un objet temporaire (dans cette expression de cas 0) ne peut pas être lié à une référence non constante.

Cependant, vous pouvez écrire

int &&r = 0; 
+0

est-ce que cela s'applique également au qualificatif 'volatile'? – silverwolf

+0

@silverwolf Ceci est appliqué aux qualificatifs cv. –