- ベストアンサー
CとC++の違いと特徴
- CとC++は異なるプログラミング言語であり、C++はCを拡張した言語です。
- C++はオブジェクト指向を取り入れており、Cよりも高度な機能を持っています。
- Cを学び、基礎を理解した上でC++を学ぶことが推奨されます。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
> Cではできるのに、C++ではできないこともあるんですね。 > こういうのってどうして、開発者はそういう仕様に作るのでしょうか。それなりに理由があってのことでしょうか。まさか忘れたなんてこともないでしょうが。 ひとつは、Cのエラーチェックが非常に甘いことがあります。(間違いの可能性が高いけれども)チェックが甘いので何も言わずにコンパイルできてしまっていたものを、C++ではチェック厳しくなったのでエラーになったりします。 もうひとつは、C++で追加された機能との整合性のためです。 > 最終的には両方使って両刀使い(?)になりたいですね。 それなら、Cから始めたほうがよいでしょう。 プログラミング初心者とのことなので、本来であれば、C++を使って、手軽に、とりあえず動くものを作っていくほうがよいのかもしれませんが、そのためのよい教本が少ないのが難点です。
その他の回答 (6)
- cametan_42
- ベストアンサー率62% (162/261)
補足
回答ありがとうございます。 なかなか、おもしろいサイトですね。 紹介感謝致します。 プログミング言語って数千もあるようで驚きました。 淘汰されていきますし。 JavaやC#も使われなくなる日が来るのでしょうか。
- jacta
- ベストアンサー率26% (845/3158)
> C++はCを完全に包含していること、了解しました。 細かい話ですが、「完全に」包含しているかというと、そんなことはありません。 Cではできて、C++ではできないこともそれなりにあります。 また、C99を持ち出せば、Cでしかできないことはかなり増えます。 > もうひとつお尋ねがあるのですが、Cを学ばずにC++からいきなり勉強をするということは可能なのでしょうか。 最終的にCを使いたいのか、C++を使いたいのかによります。 両方とも使いたいのであれば、Cからスタートすることをお勧めします。
補足
回答ありがとうございます。 Cではできるのに、C++ではできないこともあるんですね。 こういうのってどうして、開発者はそういう仕様に作るのでしょうか。それなりに理由があってのことでしょうか。まさか忘れたなんてこともないでしょうが。 最終的には両方使って両刀使い(?)になりたいですね。
- phoenix343
- ベストアンサー率15% (296/1946)
| 実戦でというのは、実際の開発業務では、C言語だけで事足りることは、そうはないという意味ですか。 いえいえC言語だけで事足りることもあるでしょう | 組込みの分野などでもそうなのでしょうか。 組込の分野であればC言語だけでは足りないことも多いと思います。 アセンブリ言語を使うこともあるでしょう。 もともとはアセンブリをもっと分かりやすくで、C言語が出来たような、と個人的には思います。。なので__asmというキーワードがあったりします。 ハードウェアにアクセスという点では VBやJavaには完全には無理ですね ハードウェアからそういうライブラリが提供されていない限り。
補足
回答ありがとうございます。 組込み関心があります。 ハードのことももっと知りたいですので。 頂いた回答によりますと、ハードウェアからライブラリがもしも、今後、提供されるようなことばあれば、VBやJavaでもハードにアクセスは可能ということなのですか。 Cについて言えば、豊富にライブラリがハードから提供されているということでしょうか。
- riwity
- ベストアンサー率58% (7/12)
#2です。 補足に補足説明します。 「実戦」という言葉に語弊がありました。 C++はCを完全に含むので、あえてCに限定するメリットを私は感じない、という意味でした。 そういえばプレステのソフトはCで開発していると聞いたことがあります。 なのでCが完全に前時代の遺物というわけではないのかもしれません。
お礼
たびたび回答ありがとうございます。 Cは健在なのですね。
- riwity
- ベストアンサー率58% (7/12)
具体的な例で違いをあげてみます。 どちらも同じ結果になります。 C++であえてCの書き方をすることもできます。 C ---------------------------- #include <stdio.h> void main(void){ printf("Hello World\n\n"); } ------------------------------ C++ -------------------------- #include <iostream> using namespace std; void main(){ cout<< "Hello World\n"<< endl; } ------------------------------ 実行結果 --------------------- Hello World ------------------------------ C++で「using~」とあるのは、名前空間という概念が追加されたためです。 実戦で純粋なCを使うことはまず無いと思います。
補足
回答ありがとうございます。 例題を挙げて頂いて、わざわざ感謝致します。 そうですか。実戦でというのは、実際の開発業務では、C言語だけで事足りることは、そうはないという意味ですか。 組込みの分野などでもそうなのでしょうか。
- buriburi3
- ベストアンサー率44% (353/792)
C++はCにクラスやテンプレート等の機能を追加した言語でCを完全に包含しています。 C++の利点はオブジェクト指向プログラミングの機能とC言語のハードウェアに直接アクセス出来る低レベルな能力を合わせもつ点にあります。 C#はC/C++とは別系統でJavaにより近い言語です。 Cを学ばずにC++を学ぶことは可能ですし別段問題は無いと思います。 C++が登場した直後には参考書の殆どがC言語をマスターしていることを前提に書かれていましたが、今はC言語未修得の初心者向けに書かれています。
補足
回答ありがとうございます。 C++はCを完全に包含していること、了解しました。 Cはハードウェアにアクセスできるという点はおもしろいですね。 こうした機能はJavaやVB.NETなどでも完全に無理なのですか。 また、ハードウェアにアクセスできるということには、どういった利点があるといえるのでしょうか。 最近の本ならC++でもC未修得前提と言うことなので、また解説書、探ってみようかと思います。 たいへん参考になりました。
お礼
たびたび回答ありがとうございます。 なるほど、CとC++の因縁(?)がわかりました。 解説、ありがとうございました。