現在C++を学んでいるのですが、色々と調べていく際にC言語で書かれたコードなどに出会うことが多々あります。
そこで、C/C++/C#においての差や、C++でコーディングしていく際に他言語と混同してはいけない事などはありますでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答5件
0
ベストアンサー
C++はC言語の仕様をほぼそのまま(完全に同じというわけではありませんが)継承しつつ、オブジェクト指向の拡張を加えたものです。ですので、C言語のコードはC++としても(拡張子をcppなどに付け替えても)ほとんどの場合そのままコンパイルできます。したがって、現在においては純粋なC言語を使うことは(少なくとも実務では)ほとんどないと思います。C++やオブジェクト指向の理解が浅い人がC言語っぽく使うことを「ベターC」と呼ぶことがあります。
C#はC++を参考にして作られた言語で、立ち位置としてはJavaに近いです。C++が基になっているので構文もC++に近いですが、やはり別の言語なのでC++と同じようにはいきません。私はC++歴の方が長いのでC#で何か作ろうとするときに、C++ならこういう風にできるのにC#ではできない、ということが多々あります(STLとかテンプレートとか)。
あと、C#ではポインタの使用は推奨されておらず、ポインタを使ったメモリ操作を行う際はコンパイルオプションを指定した上でunsafeコンテキスト(ブロック)という限定された中でしか使えないようになっています。
追記
C++でコーディングしていく際に他言語と混同してはいけない事
C#やJavaなどはガベージコレクションという、不要になったオブジェクト(領域)を自動で破棄する仕組みがあるのですが、C++では自分で管理しないといけないということが大きな違いだと思います。
C++では基本的にはnewでオブジェクトを作成(領域を確保)したらdeleteで削除しないといけません。「スマートポインタ」という仕組みを使えば「自動で破棄」させることは可能ですが、やはりちゃんと理解して使わないとメモリリークなどの問題を起こします。
投稿2015/12/20 07:56
編集2015/12/20 08:13総合スコア5944
0
C → C++ → C++++ = C#
投稿2021/11/04 02:53
総合スコア21
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。