011
19.06.2003, 08:19 Uhr
virtual
Sexiest Bit alive (Operator)
|
Zitat: |
ao postete
... Folgendes Programm kompiliert bei mir astrein. An den Bezeichnern seht ihr, daß es nur C-kompiliert (nicht C++-kompiliert) sein kann:
C++: |
int operator (void) { return 1; } int main (void) { const int class = operator (); return 0; }
|
|
Mal langsam: Obiger Code ist C++ bzw versucht es zu sein. Jeder C Compiler spuckt, weil er (C Compiler) kein Operator overloading und keine Klassen kennt. Dein letztes Post legt nahe, daß Du unter C und C++ etwas anderes verstehst als ich und andere.
Zitat: |
*gebetsmühle* Es funktioniert, weil class lokal in main ist und zur Laufzeit initialisiert wird, const hin oder her.
|
Teils teils: in C hast Du recht, wie bereits ja schon erwähnt, in C++ eben nicht:
C++: |
int f() { return 2; }
const int i = f();
int main() { const int j = f(); }
|
Hier gibt es ein lokales j und ein globales i. Wenn ich das mit einem C Compiler compilere, geht das mit dem i nicht, weil es in C nicht geht. Meine Gebetsmühle:
Zitat: |
Bei beefy tut das deshalb nicht, weil er das als C Code übersetzt hat...
|
Hier sind wir uns ja auch einig.
Wenn ich das mit einem C++ Compiler compiliere, bekomme keinen Fehler. Meine Gebetsmühle:
Zitat: |
...in C++ ist das, wie ao schon bemerkt hat, eine initialisierung und keine Zuweisung. Allerdings sollte nicht unerwähnt bleiben, daß es vollkommen wurscht ist, ob es global oder lokal ist.
|
[edit]
Zitat: |
ao postete Sagt mal, was habt ihr denn alle geraucht ;-)
|
Mein gefühl sagt mir, daß Du den Stoff auch mal probieren solltest [tide] -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) Dieser Post wurde am 19.06.2003 um 11:29 Uhr von virtual editiert. |