Ist doch nett, jetzt fehlt nur noch ein begin und end für die {}
|
Quellcode
|
1
2
|
#define begin {
#define end }
|
Es gibt sogar Leute, die das wirklich machen
Das aber ein Garbagecollector eingeführt wird wage ich doch sehr stark zu bezweifeln. Und zwar weil,
1. der GC in einem extra Thread laufen muss. Bei ner VM kein Problem, in C++ müsste aber am Anfang der main extraCode eingefügt werden.
2. Der GC müsste Zugriff auf alle Pointer im Speicher haben. D.h. z.B. dass wenn man einen Pointer in einen int castet der GC keine Referenz mehr findet und das Objekt fälschlicherweise freigibt. Bei ner VM is das auch kein Problem, da man ja nicht mal Zugriff auf den Pointer hat. (zumindest ohne unsafe Code).
3. Destruktoren würden nicht mehr am Ende des Codeblocks, sondern zufällig und u.U. sogar in nem anderen Thread aufgerufen. Bei .Net/Java ruft man deshalb auch Dispose per Hand auf. In C++ müsste man dann alle Destruktoren in Disposes ändern.
Es gibt aber natürlich für alle Probleme Lösungen (wenn auch unsaubere).
Hier gibt es zB einen C++ Compiler, der einen GC hat: (natürlich nicht standardkonform)
http://www.digitalmars.com
Ciao