Maison > Article > développement back-end > Pourquoi `const int Operator[](const int index) const` est-il préféré à `int Operator[](const int index) const` pour les types non-classes en C ?
L'importance du retour de Const pour les types hors classe
Question :
En C , pourquoi devons-nous utiliser const int Operator[](const int index) const au lieu de int Operator[](const int index) const ?
Réponse :
Pour les types non-classe, les qualificatifs const de niveau supérieur sur les types de retour sont ignorés. Cela signifie que le type de retour des deux :
int foo() {}
et
const int foo() {}
est interprété comme int. Cependant, lors du renvoi d'une référence, le const devient un niveau non supérieur et fait une différence significative :
int& operator[](int index);
et
int const& operator[](int index) const;
sont distincts.
De même , pour les valeurs de retour des types de classe, renvoyer T const empêche l'appelant d'appeler des fonctions non const sur la valeur renvoyée :
class Test { public: void f(); void g() const; }; Test ff(); Test const gg(); ff().f(); // legal ff().g(); // legal gg().f(); // illegal gg().g(); // legal
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!