Heim > Artikel > Backend-Entwicklung > Wann ersetzt der Compiler „Type&“ in C-Konvertierungsoperatoren?
Konvertierungsoperatoren in C verstehen
Im Bereich der objektorientierten Programmierung spielen Konvertierungsoperatoren eine entscheidende Rolle bei der Überbrückung der Lücke zwischen verschiedenen Datentypen. Mit diesen Operatoren kann ein Objekt als ein anderer Typ behandelt werden, was seine Verwendbarkeit erweitert.
Betrachten Sie das folgende Beispiel, um zu veranschaulichen, wie Konvertierungsoperatoren funktionieren:
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&? }
In diesem Beispiel handelt es sich um eine Smartref-Klasse Als Vorlagenklasse definiert, die eine Instanz eines beliebigen Typs enthalten kann. Der Konvertierungsoperator Operator Type&() wird implementiert, um das Smartref-Objekt in die zugrunde liegende Type-Referenz umzuwandeln.
Wenn der Compiler Type& ersetzt
Der Compiler ersetzt Type& im Konvertierungsoperator unter den folgenden Umständen:
Im Fall des bereitgestellten Beispiels ersetzt der Compiler Type& nicht innerhalb des Funktionsaufrufs think(), da dieser aufgerufen wird auf ein Objekt vom Typ smartref
Das obige ist der detaillierte Inhalt vonWann ersetzt der Compiler „Type&“ in C-Konvertierungsoperatoren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!