003
08.07.2004, 22:52 Uhr
virtual
Sexiest Bit alive (Operator)
|
Zitat: |
0xdeadbeef postete Ich bin sogar der Meinung, dass laut Standard die Parameterliste eines Destruktors eigentlich völlig leer sein muss, also nicht mal void rein darf. Naja, zumindest schrieben die Leute von Addison-Wesley das, wie sehr man sich darauf verlassen kann, weiß ich aber auch nicht.
|
Wenn ich da mal meine unmassgebliche Meinung zu abgeben darf: Die Herren von Addison-Wesley irren: Gemäß C99, §6.7.5.3 gilt: eine leere Parameterliste entspricht einer nicht weiter spezifizierten Parameterliste:
C++: |
void a(); // Nicht spezifizierte Parameterliste void b(void); // Kein Parameter
|
Die Deklaration von a ist deprecated-
Gemäß C++98, §8.3.5, C.1.6.8.3.5 gilt: eine leere Parameterliste bedeutet soviel wie kein Parameter:
C++: |
void a(); // Kein Parameter void b(void); // Kein Parameter
|
Insbesondere gilt:
C++: |
void a() { ... } void a(void) { ... }
|
Kann nicht kompilieren, weil Deklarationen hinsichtlich Parameterlisten identisch.
Summa summarum: die Deklaration
bedeutet in C und in C++ jeweils was anderes. Aber
C++: |
void a() { ... } void a(void) { ... }
|
sind in C++ das gleiche, was natürlich auch für den dtor gilt. -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |