私はC#をかなりよく知っており(独学で悲しいことに)、Windowsアプリケーション用にC++プログラミングを行う必要があります。 C#を学習しているC++開発者向けの情報をたくさん見つけることができましたが、C#をすでに知っている場合は、C++の学習についてはあまり知りませんでした。誰かが基本の良い要約に出くわしましたか?
MSDNには比較があります ですが、あまり詳細ではありません。
私はいくつかの情報源をつなぎ合わせることができますが、そこに何かがあったと考えました-それを見つけることができません。ご協力いただきありがとうございます。
このスレッド Java開発者向けのC++の開発者は非常によく似ているので、特にMark Byerの投稿を参考にしてください:
これらの本を読んでください:
- 有効なC++
- Sutter's books- Exceptional C++ style 例
- モダンC++デザイン
おそらく、覚えておかなければならない最も重要なことは、 C#/ JavaとC++ のメモリ管理手法の違いを理解することです。
私の教授の1人は、Javaバックグラウンドから来て、それがケーキだと思ってC++入門コースを教えました。彼が誰にも意味をなさないことを説明しました。彼はどこにでもメモリリークがありました。彼のポインタ演算はひどい。彼は決してOOPシラバスの一部(神に感謝)にたどり着いたことはありません。彼が示したものは事実上何もコンパイルしなかったでしょう。彼はそれを理解していませんでしたchar[]
番兵が必要でした\0
。彼のようになってはいけません。
残念ながら、基本的なC++についてはそれほど多くないので、私はあなたの望みをかなえません。さらに、C++にリモートで転送できるC#についてはほとんど知らないので、その角度をカバーする特定の資料が存在するとは思わないでしょう。最初から学ぶ必要があります。
これに対する簡単な修正はありません。C++は特に難しくはありませんが、初心者には簡単ではありません。
Cプログラミングの基礎を読んで(見つけた低レベルのものの基礎を得るために)、次にSTLを学び、次にScott Meyersなどの記事を読むことをお勧めします。 これは1つです これは、C-with-classesと比較して、最新のC++をどのように記述する必要があるかを示しています。
まだ資料を探しているかどうかはわかりませんが、この記事は数か月前に見つかりました。本ではありません(53ページのみ)。イントロダクションはそれをすべて言います:
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
また、更新投稿もあります:
上記のページには、PDFバージョンへのデッドリンクが含まれています。これが archived pdf です。
幸せな学習:)
C#からC++へのチュートリアルが多すぎないのは良いことだと思います。彼らはおそらくあなたの脳を混乱させるかもしれません。これは、まずバイクに乗ってから自転車に乗り換えることを学ぶのとよく似ています(完全に適切なアノロジーではありませんが、アイデアはわかります)。 C++に関する最新の本を読むことをお勧めします。 OOPの概念をすでに理解しているので、OOPの概念(CからC++に移行する人を対象としています)への長い説明は省略できます)。または、初心者から中級者または中級者向けの参考図書を直接探してください。
だから、約1年前、私はあなたと同じ船に乗っていました。C++を学ぶ必要性を感じた独学のc#開発者です。確かに、私は何度も立ち止まって開始しました。 3回目の試みで、私はついにそれを突き刺しました。
理解する必要があるのは、C++およびC#の方法論の観点から、ポインターと参照を介してどのデータ操作メソッドを理解するのに多くの時間を費やすことになるでしょう本当に手段、および状況を考慮してそれらをいつどのように使用するかを意味します。
C++の良い点は、オブジェクトスタックの割り当てがほとんどの場合非常に単純であることです。プログラムがこのメソッドで指定された要件を満たす場合は、この方法でオブジェクトを割り当てる必要があります。それ以外の場合は、速度、効率、および迅速なクリーンアップをポインタに依存しています。私はこれを読むことをお勧めします: http://www.parashift.com/c++-faq-lite/ これは、C++が内部でどのように機能するかについての技術的な理解をたくさん与えるためです。
例を挙げましょう。
C++では、「初期化リスト」と呼ばれるこのコンストラクター実装が存在します。これは、コンストラクターの本体でクラスメンバーを初期化することとは異なります。どうして?初期化されている型がプリミティブでない限り、コンパイラーは実際に複数作成し、ctorの本体に割り当てられたときに作成されるオブジェクトの不要なコピーを作成します。これにより、コンパイラーやアプリのスケーリングされた要件によっては、パフォーマンスが低下する可能性があります。
デリゲートとは何か知っていますか?まあ、C++では関数ポインターとして知られています。この言語は、最初はマスターするのがかなり難しいですが、あなたが素晴らしいものになりたいのなら...それは絶対に必要です。
C#は簡単です...とても簡単です。
Rosetta Codeにアクセスして、2つを比較することをお勧めします。そこにいる間、C++イディオムのリンクを手元に置いておき、それらを見つけてみてください。次に、ポインタ/参照/メモリ/デストラクタレルムに少し時間をかけます。その後、プリプロセッサについて学びます。醜いものを隠すことに関しては、本当にあなたの友達になることができます。ちょっと寂しいです。最後に、STL。