Hallo,
ich weiß dieses ist ein C# Forum und ich weiß auch, dass C++.Net in vielen Augen in kritisches Thema ist. Allerdings erhoffe ich mir von einige Antworten zu bekommen, da ihr in der .Net Szene seit.
Und zwar habe ich früher C++ programmiert und war auch immer sehr zufrieden damit. Durch Umstände war ich dann gezwungen Java zu programmieren und ein bisschen C#, bin darin aber nicht sehr gut.
Inzwischen möchte ich wieder zu C++ zurück, da dieses für mich immer einen besonderen Reiz hatte.
Jetzt wo es C++.Net gibt verstehe ich leider einiges nicht mehr. C++ gab es so etwas wie einen Garbage Collector oder ähnliches nicht. Wie ist das unter C++.Net? Kann ich hier wie gewohnt programmieren oder ist es von C++ Standard sehr weit weg?
Viele Grüße
MM
Kann ich hier wie gewohnt programmieren oder ist es von C++ Standard sehr weit weg?
Wenn du mit .NET-Klassen arbeiten willst, dann hast du es mit dem Garbage Collector zu tun. Wenn du C++ proggen willst wie gewohnt, dann nicht mit .NET.
.NET = managed Code.
Klassisches C++ = unmanaged Code.
Das "C++.NET" kann beides zugleich. Aber wenn du eh nur das eine willst, dann bleib doch einfach bei C++.
Hallo MrMilk,
vielleicht ist auch der Wikipedia-Artikel zu C++/CLI interessant für dich.
Grüße,
Isaac
.NET = managed Code.
Klassisches C++ = unmanaged Code.
Genau dieses verwundert mich, wieso nennt man es dann noch C++? Weil C++ war ja immer unmanaged. Erinnert mich ein bisschen an die quadratur des Kreises.
Viele Grüße
MM
ganz einfach weil der Syntax änlich ist und um den ehemaligen C++ programmieren zu zeigen inwelcher .NET sprache sie sich am heimischsten fühlen werden.
ein anderes Beispiel dazu ist das Neue VB.NET das auch nicht mehr soviel mit dem "Alten" VisualBasic zu tun hat
EDIT:
MSDN: Die Sprache C# im Detail
Wir Arbeiten eigendlich nicht wir nehmen nur das geld
Hallo MrMilk,
primär dient managed C++ (also C++, das mit "/clr" kompiliert wurde und "erweiterte" Befehle nutzt) zum Interopt zwischen managed und unmanaged Code.
Es stellt zum Beispiel kein Problem dar, eine Methode "eigentlich" unmanaged zu programmieren und dann aber managed Klassen zu verwenden.
Zum Thema GarbageCollection: Alles, was mit gcnew
erzeugt wurde, fällt unter die automatische Speicherverwaltung des .NET Frameworks. Allerdings gibt es hier Einschränkungen: Man kann nicht einfach ein new
durch ein gcnew
ersetzen. Dabei werden managed Pointer (oder wie sie auch immer mit Fachausdruck heißen) durch ein vorgestelltes ^
gekennzeichnet.
Du kannst also unter managed C++ eigentlich alles machen, was unter unmanaged C++ auch geht (den Code also fast 1:1 übernehmen). Dabei ändert sich auch das Ausführungsverhalten nicht.
Eine Einschränkung gibt es aber doch: Dir steht keine Mehrfachvererbung mehr zur Verfügung.
Nur, dass du eben unter managed C++ auch .NET Datentypen verwenden kannst, um die sich dann der GC kümmert.
Hoffentlich konnte ich dir etwas Klarheit verschaffen - und habe auch nichts Falsches gesagt; meine C++ Kenntnisse sind nicht gerade die allerbesten.