Je ne suis pas sûr que le vrai sens de l' const vector<int *>
donc j'ai compilé le code ci-dessous pour vous faire une idée, mais je suis maintenant plus confus.
vector<int *> v;
int x = 1, y = 2;
v.push_back(&x);
v.push_back(&y);
const vector<int *> w = v;
w[0] = &y; //failed. Element is a constant pointer?
*(w[0]) ++; //failed. Element pointer references to constant value?
Si je m'étais arrêté là, j'aurais cru qu' const vector<int *>
est un vecteur d' const int * const
, mais ensuite j'ai essayé le suivant qui a clairement contredit cette hypothèse.
*(w[0]) += 3; //passed. Value not constant?
*(w[0]) = 20; //passed. Why...
Maintenant, *(w[0])
, pour une raison inconnue de moi, évidemment, des friandises ++
et +=
et l'affectation différemment. Je me suis convaincu que const vector
seulement déclare un objet constant de l' vector
de la classe et que les résultats ci-dessus peut dépendre de la mise en œuvre effective de la surcharge d'opérateur de vector
classe. Mais je ne peut pas envelopper la tête autour de cela. Quelqu'un peut-il aider à expliquer, s'il vous plaît?
Si elle est pertinente, j'ai utilisé g++ 4.2 sur un Mac.