Maison > développement back-end > C++ > 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 ?

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 ?

DDD
Libérer: 2024-10-30 13:26:35
original
568 Les gens l'ont consulté

Why is `const int operator[](const int index) const` preferred over `int operator[](const int index) const` for non-class types in 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() {}
Copier après la connexion

et

const int foo() {}
Copier après la connexion

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);
Copier après la connexion

et

int const& operator[](int index) const;
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal