it-swarm.dev

C ++ für C # -Entwickler

Ich kenne C # ziemlich gut (Autodidakt, leider) und muss etwas C++ - Programmierung für eine Windows-Anwendung durchführen. Ich konnte eine Menge Informationen für C++ - Entwickler finden, die C # lernen, aber ich konnte nicht viel über das Erlernen von C++ finden, wenn Sie C # bereits kennen. Hat jemand einen guten Überblick über die Grundlagen?

MSDN hat einen Vergleich aber es ist nicht sehr ausführlich.

Ich kann mehrere Quellen zusammenfügen, aber ich dachte, da draußen ist etwas - ich kann es einfach nicht finden. Danke für Ihre Hilfe.

27
Mark Williams

Dieser Thread unter C++ für Java Entwickler sind sehr ähnlich und sollten nützlich sein, insbesondere Mark Byers Beitrag:

Lesen Sie diese Bücher:

Wahrscheinlich ist es am wichtigsten, den Unterschied in den Speicherverwaltungstechniken zwischen C #/Java und C++ zu verstehen.

Einer meiner Profis kam aus einem Java Hintergrund) und unterrichtete einen C++ - Einführungskurs, in dem er dachte, es wäre Kuchen. Nichts, was er erklärte, ergab für irgendjemanden einen Sinn. Er hatte überall Gedächtnislecks. Seine Zeigerarithmetik war schrecklich. Er kam nie zum OOP Teil des Lehrplans (Gott sei Dank). Praktisch nichts, was er demonstrierte, hätte zusammengestellt. Er verstand das nicht char[] brauchte einen Sentinel \0. Am Ende nicht wie er.

11
Rei Miyasaka

Leider gibt es nicht viel über C++, das grundlegend ist, also würde ich Ihre Hoffnungen nicht wecken. Darüber hinaus wissen Sie nur wenig über C #, das sogar remote auf C++ übertragbar ist, sodass ich nicht erwarten würde, dass ein bestimmtes Material für diesen Winkel vorhanden ist. Sie müssen von Grund auf lernen.

14
DeadMG

Es gibt keine einfache Lösung dafür, C++ ist nicht besonders schwierig, aber für Anfänger nicht einfach.

Ich würde empfehlen, sich über die Grundlagen der C-Programmierung zu informieren (um einen Überblick über die Low-Level-Inhalte zu erhalten) und dann die STL zu lernen, gefolgt von Artikeln von Scott Meyers. Hier ist eine , um Ihnen den Einstieg zu erleichtern, da es zeigt, wie Sie modernes C++ im Vergleich zu C-with-Klassen schreiben sollten.

9
gbjbaanb

Ich bin mir nicht sicher, ob Sie noch nach Materialien suchen. Ich habe diesen Artikel vor einigen Monaten gefunden. Es ist kein Buch (nur 53 Seiten). Die Einführung sagt alles:

This is a somewhat short guide to the important things to know if you are a C# programmer and find yourself needing or wanting to work in C++

http://geekswithblogs.net/mikebmcl/archive/2012/02/02/c-to-c-ndash-a-somewhat-short-guide.aspx

Und es gibt auch einen Update-Beitrag:

http://geekswithblogs.net/mikebmcl/archive/2012/02/14/c-to-cndasha-somewhat-short-guide-update-1.aspx

Die obige Seite enthält jetzt einen toten Link zu einer PDF-Version. Hier ist das archiviertes PDF .

Viel Spaß beim Lernen :)

7
Chris
  • Achten Sie auf die Speicherverwaltung. Machen Sie sich ein klares Bild davon, wie Zeiger und Referenzen in C++ im Gegensatz zu C # funktionieren. Auch RAII, manuelle Speicherverwaltung und Smart Pointer endlich.
  • Vorlagen und Generika sehen ähnlich aus, sind aber unterschiedliche Bestien. Kennen Sie die Interna der Funktionsweise von Vorlagen.
  • Es gibt einige winzige, aber eingängige syntaktische Unterschiede. Lerne sie.
  • Sie haben sich an STL anstelle von .net BCL gewöhnt. Sie werden möglicherweise einige gute Dinge verpassen, wenn Sie LINQ-abhängig sind.
  • Es gibt einige grundlegende Designunterschiede zwischen C++ und C #. Sie können also nicht einfach eine Idee portieren. Alles, was Sie mit C++ erstellen, müssen Sie von Grund auf neu entwerfen.
  • Viel Glück
4
Gulshan

Ich finde es gut, dass Sie nicht zu viele C # to C++ - Tutorials finden. Sie können wahrscheinlich Ihr Gehirn durcheinander bringen. Es ist fast so, als würde man zuerst lernen, Motorrad zu fahren und dann auf ein Fahrrad umzusteigen (keine völlig angemessene Anologie, aber man kommt auf die Idee). Es ist besser für Sie, ein neues Buch über C++ zu nehmen. Da Sie bereits mit den Konzepten OOP] vertraut sind, können Sie entweder die langen Einführungen in OOP Konzepte) überspringen (sie sind für Personen gedacht, die von C nach C++ migrieren). Oder suchen Sie direkt nach einem Nachschlagewerk für Anfänger bis Fortgeschrittene oder Fortgeschrittene.

1
DPD

Vor ungefähr einem Jahr saß ich im selben Boot wie Sie: Autodidakt c # dev, der das Bedürfnis hatte, C++ zu lernen. Zugegeben, ich habe mehrmals angehalten und angefangen. Bei meinem dritten Versuch habe ich es endlich geschafft.

Es ist wichtig zu verstehen, dass Sie in Bezug auf C++ - und C # -Methoden wahrscheinlich viel Zeit damit verbringen werden, zu verstehen, welche Datenmanipulationsmethoden durch Zeiger und Referenzen wirklich bedeutet, wann und wie sie unter den gegebenen Umständen zu verwenden sind.

Das Schöne an C++ ist, dass die Zuordnung von Objektstapeln größtenteils recht einfach ist und Sie Objekte auf diese Weise zuweisen sollten, wenn Ihr Programm die unter dieser Methode angegebenen Anforderungen erfüllt. Andernfalls verlassen Sie sich auf Zeiger für Geschwindigkeit, Effizienz und schnelle Bereinigung. Ich empfehle Folgendes zu lesen: http://www.parashift.com/c++-faq-lite/ da es Ihnen viel technisches Verständnis darüber gibt, wie C++ unter der Haube funktioniert.

Lassen Sie mich Ihnen ein Beispiel geben:

In C++ gibt es diese Konstruktorimplementierung, die als "Initialisierungsliste" bezeichnet wird und sich von der Initialisierung von Klassenmitgliedern im Hauptteil eines Konstruktors unterscheidet. Warum? Denn wenn der zu initialisierende Typ nicht primitiv ist, erstellt der Compiler tatsächlich mehrere und unnötige Kopien des Objekts, das erstellt wird, wenn es im Hauptteil des Ctors zugewiesen wird. Dies kann möglicherweise die Leistung verringern, abhängig vom Compiler sowie den skalierten Anforderungen der App.

Wissen Sie, was ein Delegierter ist? Nun, in C++ ist es als Funktionszeiger bekannt. Diese Sprache ist anfangs ziemlich schwer zu beherrschen, aber wenn du großartig sein willst ... ist es definitiv erforderlich.

C # ist einfach ... sehr einfach.

1
about blank

Ich würde empfehlen, zu Rosetta Code zu gehen und die beiden zu vergleichen. Halten Sie während Ihres Aufenthalts einen Link mit C++ - Redewendungen bereit und versuchen Sie, diese zu erkennen. Verbringen Sie dann einige Zeit im Bereich Zeiger/Referenz/Speicher/Destruktor. Danach lerne etwas über den Präprozessor - es kann wirklich dein Freund sein, wenn es darum geht, die Hässlichen zu verstecken, ich vermisse es irgendwie. Schließlich die STL.

1
Mark