Explizite Konvertierungsoperatoren (C++11)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu C++11-Features - Index

C++Builder 2009 unterstützt explizite Konvertierungsoperatoren, eines der Features des C++0x-Standards.

Sie können den Funktionsbezeichner explicit jetzt in der Definition eines benutzerdefinierten Konvertierungsoperators verwenden. Früher wurden der Sprache explizite Konstruktoren (einschließlich von Kopierkonstruktoren) hinzugefügt, um unbeabsichtigte Konvertierungen zu verhindern, die implizit vom Compiler aufgerufen wurden. Jetzt sind explizite Konvertierungsoperatoren hinzugefügt worden, um dieselbe Kontrolle über unbeabsichtigte Konvertierungsaufrufe zu erzielen.

Als "explicit" deklarierte Konvertierungsfunktionen arbeiten in demselben Kontext wie explizite Konstruktoren (direkte Initialisierung, explizite Typumwandlung). Explizite Konvertierungsoperatoren bewirken Compiler-Diagnosen in demselben Kontext (Kopierinitialisierung) wie explizite Konstruktoren.

Zum Beispiel:

class T {
};

class X {
public:
	explicit operator T() const ;
};

void m() {
	X x;
 
        // mit Typumwandlung:
        T tc = (T)x; // ok
 
        // ohne Typumwandlung:
        T t = x;// Fehler: E2034 Konvertierung von 'X' nach 'T' nicht möglich
}


Siehe auch