Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Unterschiede zwischen native C++ und C++.Net
MrMilk
myCSharp.de - Member



Dabei seit:
Beiträge: 75

Themenstarter:

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

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
svenson
myCSharp.de - Member



Dabei seit:
Beiträge: 8.746
Herkunft: Berlin

beantworten | zitieren | melden

Zitat von MrMilk
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++.
private Nachricht | Beiträge des Benutzers
userid12529
myCSharp.de - Member



Dabei seit:
Beiträge: 208

beantworten | zitieren | melden

Hallo MrMilk,

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

Grüße,
Isaac
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von userid12529 am .
private Nachricht | Beiträge des Benutzers
MrMilk
myCSharp.de - Member



Dabei seit:
Beiträge: 75

Themenstarter:

beantworten | zitieren | melden

Zitat von svenson
.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
private Nachricht | Beiträge des Benutzers
S.H.-Teichhof
myCSharp.de - Member

Avatar #avatar-2460.jpg


Dabei seit:
Beiträge: 1.549
Herkunft: Sindringen

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von S.H.-Teichhof am .
Wir Arbeiten eigendlich nicht wir nehmen nur das geld
private Nachricht | Beiträge des Benutzers
winSharp93
myCSharp.de - Experte

Avatar #avatar-2918.png


Dabei seit:
Beiträge: 5.742
Herkunft: Stuttgart

beantworten | zitieren | melden

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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von winSharp93 am .
private Nachricht | Beiträge des Benutzers