Ich bin ein Softwareentwickler, der Erfahrung mit C # (5 Jahre Erfahrung) zusammen mit einigen anderen Sprachen hat.
Mein "Traumjob" ist es, als Entwickler in Videospielen zu arbeiten.
Die meisten Jobs erfordern Kenntnisse in C ++, die ich derzeit nicht habe (mit Ausnahme einiger Grundlagen).
Ich habe mich umgesehen und die meisten großen Spielefirmen benötigen 3-5 Jahre Erfahrung mit C ++.
Meine Frage ist - was wäre ein guter Weg, um mich von C # aus auf dieses erforderliche Erfahrungsniveau zu bringen?
Ich habe mir einige Möglichkeiten überlegt:
Erfahren Sie mehr über C ++ in Büchern. Nehmen Sie an Open-Source-Projekten teil, die in C ++ geschrieben sind. Was wäre der beste Weg, um C ++ zu lernen und Erfahrungen auf Arbeitsebene damit zu sammeln, insbesondere für die Spielebranche?
quelle
Antworten:
Als Spieleentwickler würde mein Hauptanliegen, einen C # -Typ einzustellen, ein Mangel an geringen Kenntnissen sein.
Stellen Sie sich also ein Projekt vor, bei dem Ihre Arbeit eine Optimierung auf niedriger Ebene erfordert, z. B. das Umordnen des Datenlayouts von Klassen oder das Umschreiben von Code, um die Vorteile von SIMD-Anweisungen zu nutzen. Nehmen Sie ein C ++ - Open-Source-Spiel, optimieren Sie es und veröffentlichen Sie die Frameratenerhöhung in Ihrem Lebenslauf.
Wenn ich Sie interviewen würde, würde mich das C ++ in Ihrem Lebenslauf weniger interessieren, als vielmehr, ob Sie meine C / C ++ / Low-Level-Interviewfragen beantworten können. Ich werde ein paar Fragen zu Standardinterviews beantworten, mit denen Sie möglicherweise Probleme haben (Warnung: Ich bin kein C # -Experte):
quelle
Was Eric gesagt hat. Ich würde auch hinzufügen, um "neu" zu vermeiden, wo es nicht notwendig ist. Es ist in C # sehr verbreitet, wird jedoch in C ++ 11 als schlechte Praxis angesehen und ist auch langsamer als die Stapelzuweisung und gefährlicher, da Sie die Zuordnung manuell aufheben müssen.
Ich würde auch vorsichtig mit alten Büchern sein, sie lehren alte Praktiken. Ich persönlich bevorzuge zuverlässige Foren / Websites, Stackoverflow / Isocpp.
quelle
new
" ist wirklich keine vernünftige Empfehlung. Sie verwenden,new
wenn Sie Zeiger haben. Wenn jaclass Derived : Base
, dannBase var = Derived();
ist a illegal, aberBase *var = new Derived();
legal. Sie brauchen also Zeiger, damit der Polymorphismus richtig funktioniert.Base var = Derived()
würde funktionieren , aber es würde in Scheiben geschnitten und, ohne dass Sie es merken, Informationen verloren invar
. Um das Slicing-Problem zu beheben, können Sie Zeiger verwenden.