Maison > Article > développement back-end > Quand le compilateur remplace-t-il « Type & » dans les opérateurs de conversion C ?
Comprendre les opérateurs de conversion en C
Dans le domaine de la programmation orientée objet, les opérateurs de conversion jouent un rôle crucial en comblant le fossé entre les différents types de données. Ces opérateurs permettent à un objet d'être traité comme un autre type, élargissant ainsi sa convivialité.
Considérez l'exemple suivant pour illustrer le fonctionnement des opérateurs de conversion :
template <class Type> class smartref { public: smartref() : data(new Type) { } operator Type&() { return *data; } private: Type* data; }; class person { public: void think() { std::cout << "I am thinking"; } }; int main() { smartref<person> p; p.think(); // why does not the compiler try substituting Type&? }
Dans cet exemple, une classe smartref est définie comme une classe de modèle, qui peut contenir une instance de n'importe quel type Type. L'opérateur de conversion Type&() est implémenté pour convertir l'objet smartref en référence Type sous-jacente.
Lorsque le compilateur remplace Type&
Le compilateur remplacera Type& dans le opérateur de conversion dans les circonstances suivantes :
Dans le cas de l'exemple fourni, le compilateur ne substitue pas Type& dans l'appel de fonction think() car il est appelé sur un objet de type smartref
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!