Laden...

Unterschiede zwischen native C++ und C++.Net

Erstellt von MrMilk vor 14 Jahren Letzter Beitrag vor 14 Jahren 2.481 Views
M
MrMilk Themenstarter:in
75 Beiträge seit 2008
vor 14 Jahren
Unterschiede zwischen native C++ und C++.Net

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

S
8.746 Beiträge seit 2005
vor 14 Jahren

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++.

U
208 Beiträge seit 2008
vor 14 Jahren

Hallo MrMilk,

vielleicht ist auch der Wikipedia-Artikel zu C++/CLI interessant für dich.

Grüße,
Isaac

M
MrMilk Themenstarter:in
75 Beiträge seit 2008
vor 14 Jahren

.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

1.549 Beiträge seit 2004
vor 14 Jahren

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

5.742 Beiträge seit 2007
vor 14 Jahren

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.