Pperatoren für neue Klasse deaktivieren
-
Hi,
Wenn man eine neue Klasse schreibt, erstellt der Compiler ja direkt die
Operatoren dafür. So kann ich direkt 2 Klassen miteinander vergleichen oder
zuweisen ohne etwas geschrieben zu haben. Nun habe ich 2 Fragen:- Kann man irgendwie verhindern, dass für die Klasse die Operatoren erstellt werden, sodass man diese Operatoren nicht benutzen kann?
Hierfür habe ich schon eine Lösung. Man schreibt die Operatorendekleration einfach in den private/protected Teil und gut ist, aber vlt gibt es ja noch eine bessere Lösung.
- Welche Operatoren weden std-mäßig vom Compiler erstellt?
mfg
-
Operator[] schrieb:
Wenn man eine neue Klasse schreibt, erstellt der Compiler ja direkt die
Operatoren dafür. So kann ich direkt 2 Klassen miteinander vergleichen oder
zuweisen ohne etwas geschrieben zu haben.Nöö. Der einzige Operator, der generiert wird, dürfte der Zuweisungsoperator sein.
- Kann man irgendwie verhindern, dass für die Klasse die Operatoren erstellt werden, sodass man diese Operatoren nicht benutzen kann?
Klar, geht. Schreib einfach in Deine Klasse folgenden Code ('T' sei der Name Deiner Klasse):
private: T& operator =(T const&);Dadurch wird verhindert, dass der Operator von außen aufgerufen werden kann.
Hierfür habe ich schon eine Lösung. Man schreibt die Operatorendekleration einfach in den private/protected Teil und gut ist, aber vlt gibt es ja noch eine bessere Lösung.
Ne, die Lösung ist super ('protected' evtl. noch besser als 'private').
-
private ist schon OK, man implementiert die dann ja nicht, was bringt dann protected wenns nicht implementiert ist
