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
DDDoriginal
2024-10-30 13:26:35582parcourir

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() {}

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!

Déclaration:
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