CとC++の違いと特徴

このQ&Aのポイント
  • CとC++は異なるプログラミング言語であり、C++はCを拡張した言語です。
  • C++はオブジェクト指向を取り入れており、Cよりも高度な機能を持っています。
  • Cを学び、基礎を理解した上でC++を学ぶことが推奨されます。
回答を見る
  • ベストアンサー

CとC++の違いがよくわかりません。

質問タイトルのとおりなのですが、C++はCの後継で、拡張発展させたものという気がしますが、双方はどのように違い、またそれぞれどのような特徴があるのでしょうか。 C++はオブジェクト指向を取り入れているが、多少無理してCを改変したためにやたら難しい仕上がりの言語になっているとも聞きました。C#はそのあたりが改善されているようですが。 それと、Cは手続き型言語であるということは、多少調べたので、了解しているつもりです。 また、このオブジェクト指向にすることによって、どのようなメリットがあるのでしょうか。 Cには難しいが、C++なら要領よくできるというようなぷろぐらむがあるということなのですかね。そうでなければ、わざわざC++を開発する必要も無かったと思います。 もうひとつお尋ねがあるのですが、Cを学ばずにC++からいきなり勉強をするということは可能なのでしょうか。 それとも、英語や数学などと同じく積み重ねが大事で、Cを学んでこそ、C++に初めてに移行できるものなのでしょうか ちなみに、プログラミングはこれまで未経験で学習を始めたばかりのまだ初心者です。 どなたか、回答よろしくお願い致します。

  • furoru
  • お礼率62% (338/537)

質問者が選んだベストアンサー

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.6

> Cではできるのに、C++ではできないこともあるんですね。 > こういうのってどうして、開発者はそういう仕様に作るのでしょうか。それなりに理由があってのことでしょうか。まさか忘れたなんてこともないでしょうが。 ひとつは、Cのエラーチェックが非常に甘いことがあります。(間違いの可能性が高いけれども)チェックが甘いので何も言わずにコンパイルできてしまっていたものを、C++ではチェック厳しくなったのでエラーになったりします。 もうひとつは、C++で追加された機能との整合性のためです。 > 最終的には両方使って両刀使い(?)になりたいですね。 それなら、Cから始めたほうがよいでしょう。 プログラミング初心者とのことなので、本来であれば、C++を使って、手軽に、とりあえず動くものを作っていくほうがよいのかもしれませんが、そのためのよい教本が少ないのが難点です。

furoru
質問者

お礼

たびたび回答ありがとうございます。 なるほど、CとC++の因縁(?)がわかりました。 解説、ありがとうございました。

その他の回答 (6)

回答No.7
furoru
質問者

補足

回答ありがとうございます。 なかなか、おもしろいサイトですね。 紹介感謝致します。 プログミング言語って数千もあるようで驚きました。 淘汰されていきますし。 JavaやC#も使われなくなる日が来るのでしょうか。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.5

> C++はCを完全に包含していること、了解しました。 細かい話ですが、「完全に」包含しているかというと、そんなことはありません。 Cではできて、C++ではできないこともそれなりにあります。 また、C99を持ち出せば、Cでしかできないことはかなり増えます。 > もうひとつお尋ねがあるのですが、Cを学ばずにC++からいきなり勉強をするということは可能なのでしょうか。 最終的にCを使いたいのか、C++を使いたいのかによります。 両方とも使いたいのであれば、Cからスタートすることをお勧めします。

参考URL:
http://www.kijineko.co.jp/tech/cpp2c
furoru
質問者

補足

回答ありがとうございます。 Cではできるのに、C++ではできないこともあるんですね。 こういうのってどうして、開発者はそういう仕様に作るのでしょうか。それなりに理由があってのことでしょうか。まさか忘れたなんてこともないでしょうが。 最終的には両方使って両刀使い(?)になりたいですね。

  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.4

| 実戦でというのは、実際の開発業務では、C言語だけで事足りることは、そうはないという意味ですか。 いえいえC言語だけで事足りることもあるでしょう | 組込みの分野などでもそうなのでしょうか。 組込の分野であればC言語だけでは足りないことも多いと思います。 アセンブリ言語を使うこともあるでしょう。 もともとはアセンブリをもっと分かりやすくで、C言語が出来たような、と個人的には思います。。なので__asmというキーワードがあったりします。 ハードウェアにアクセスという点では VBやJavaには完全には無理ですね ハードウェアからそういうライブラリが提供されていない限り。

furoru
質問者

補足

回答ありがとうございます。 組込み関心があります。 ハードのことももっと知りたいですので。 頂いた回答によりますと、ハードウェアからライブラリがもしも、今後、提供されるようなことばあれば、VBやJavaでもハードにアクセスは可能ということなのですか。 Cについて言えば、豊富にライブラリがハードから提供されているということでしょうか。

  • riwity
  • ベストアンサー率58% (7/12)
回答No.3

#2です。 補足に補足説明します。 「実戦」という言葉に語弊がありました。 C++はCを完全に含むので、あえてCに限定するメリットを私は感じない、という意味でした。 そういえばプレステのソフトはCで開発していると聞いたことがあります。 なのでCが完全に前時代の遺物というわけではないのかもしれません。

furoru
質問者

お礼

たびたび回答ありがとうございます。 Cは健在なのですね。

  • riwity
  • ベストアンサー率58% (7/12)
回答No.2

具体的な例で違いをあげてみます。 どちらも同じ結果になります。 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を使うことはまず無いと思います。

furoru
質問者

補足

回答ありがとうございます。 例題を挙げて頂いて、わざわざ感謝致します。 そうですか。実戦でというのは、実際の開発業務では、C言語だけで事足りることは、そうはないという意味ですか。 組込みの分野などでもそうなのでしょうか。

  • buriburi3
  • ベストアンサー率44% (353/792)
回答No.1

C++はCにクラスやテンプレート等の機能を追加した言語でCを完全に包含しています。 C++の利点はオブジェクト指向プログラミングの機能とC言語のハードウェアに直接アクセス出来る低レベルな能力を合わせもつ点にあります。 C#はC/C++とは別系統でJavaにより近い言語です。 Cを学ばずにC++を学ぶことは可能ですし別段問題は無いと思います。 C++が登場した直後には参考書の殆どがC言語をマスターしていることを前提に書かれていましたが、今はC言語未修得の初心者向けに書かれています。

furoru
質問者

補足

回答ありがとうございます。 C++はCを完全に包含していること、了解しました。 Cはハードウェアにアクセスできるという点はおもしろいですね。 こうした機能はJavaやVB.NETなどでも完全に無理なのですか。 また、ハードウェアにアクセスできるということには、どういった利点があるといえるのでしょうか。 最近の本ならC++でもC未修得前提と言うことなので、また解説書、探ってみようかと思います。 たいへん参考になりました。

関連するQ&A

  • Cとjavaの違い

    学校でC言語プログラミングを学んでおり,新たにjavaも習うことになったのですが, C言語とjava言語の違いはどのような所なのでしょうか? java言語は「オブジェクト指向」ですが,C言語は何指向なのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • C++の将来性・・・

    昨年まで、C++プログラマをしていました。しかし恥ずかしながらぜんぜんオブジェクト指向じゃないコードを書いていました・・・ いまJavaで仕事していて感じるのですが、C++にはガベージコレクションがないので、実はオブジェクト指向プログラミングがとてもやりにくい言語ではないですか? そうなると、C++の必然性がなくなり、C Java C# に取って代わられてC++は消え去っていく言語なのでしょうか。 「いやC++はすばらしいオブジェクト指向言語だ!」というお叱りを期待しています。

  • C++とJava

    オブジェクト指向を採用しているC++とJava。オブジェクト指向プログラミングに関連している部分で、二つの言語の大まかな違いは何でしょうか。

  • なぜ「C言語」にOOPが実装されなかったの?

    1972年に開発された「C言語」(C++ではない)には「オブジェクト指向」というのがないのですが、なぜ「C言語」に「オブジェクト指向」というのが実装されなかったのですか? 「オブジェクト指向プログラミング」は1960年代後半に登場していたのですが、後発の「C言語」には「ポインタ」はあっても「オブジェクト指向」というのがありません。なぜ「オブジェクト指向」は実装されなかったのでしょうか? 当時コンピュータの性能が低かったため実装が難しかったことと、まだ当時オブジェクト指向自体が無名だった為、「C言語」の開発者自体も知らなかったということもあるのでしょうか?

  • C言語、C+、C++、C#の違い

    C言語、C+、C++、C#の違いがよくわかりません。 自分でも調べてみましたが、「オブジェクト指向」という言葉が出てきて、よくわかりません。 わかりやすく教えていただけたら幸いです。 初心者がプログラミング言語を始めるならどの言語がいいですか? 幅広い分野で活用でき、初心者でもわかりやすい言語がいいのです。 私は、C言語、C+、C++、C#のどれかを勉強しようと考えているのですが、この中の言語ならどれがいいでしょうか?もちろんこの中の言語以外に初心者にわかりやすく幅広い分野で活用できる言語があればそちらにしようと思います。ありましたら教えてください。

  • C++について

    C++について C++を学ぼうと思って入門書を探しています。 今までにC++、オブジェクト指向はやったことがありません。 C言語は初級と中級の間ぐらいの知識です。現在は独習Cを読んで、理解を深めています。 VC++を理解したいと思って業務(ツール)のソースや構成などを見てもさっぱりでした。 どこから学んでいけばよく分からない状態です。 オブジェクト指向を理解しつつ、C++も習得していってVC++を使えるようになりたいです。 Visual C++〈1〉はじめてのWindowsプログラミング (プログラミング学習シリーズ) が良いと聞いたのですが、C言語を分かっている程度の私が読んで勉強になりますか? もし、他に取っ掛かりやすい本がありましたらお願い致します。

  • C言語とC++ の違いについて(オブジェクト指向)

    今まで(3年ぐらい)は,ずっとC言語を勉強してきました. C言語だったらある程度のプログラムは書けると思います. ただ,来年からC++ を使わなくてはならなくなってしまい ました... CとC++との間には一体どういった違いがあるんでしょうか? よく耳にするのが「オブジェクト指向か,そうではないか」 ということです. オブジェクト指向...,良く分りません.一体どういう ことなんでしょうか. なるべく詳しく教えていただけると助かります.また参考書 やサイトなどを教えていただいても構いません. よろしくお願いいたします.

  • [参考書]洋書でオブジェクトC++

    趣味でC言語を数年やっています。 現在、C++でのオブジェクト指向でのプログラミングに着手しています。 いくつかの書籍を参考に学んでいますが、和書だけでなく洋書も読みたいと思っています。「C++でのオブジェクト指向」の入門書(洋書)でお勧めのものがありましたら教えてください。 お願いします。

  • C++とVC++の違いについて

    この質問をご覧頂きありがとうございます。 みなさんに2つ、お聞きしたいことがあり、質問させていただきます。 1.C++とVC++とでは、どのくらいの違い(どういう違い、特徴)があるのでしょうか? 2.また、これからC++/VC++でプログラミングを始めようとした場合、 C++からVC++へと段階を踏んで勉強した方がよいのでしょうか? 一応、私のプログラミングの履歴としては、 言語としてVisual Basicは多少勉強はしておりました。 また、オブジェクト指向の基礎程度(多相、継承、カプセル化)は理解しています。 抽象的な質問で大変恐縮なのですが、 みなさんの経験論や、ご参考にした本、HP等がありましたら、 ご教授いただければと思います。

  • 言語別(C/C++,Java等)の計算速度の違いが知りたいです。

    言語別(C/C++,Java等)の計算速度の違いが知りたいです。 巡回セールスマン問題を解く(よさそうな解を見つける)プログラムを書くことになったのですが、言語が自由です。 オブジェクト指向言語で組もうと思っているんですが、C++、C#、Javaなどの言語のうち、計算速度が早いのはどれでしょうか? 順番も分かれば、教えてほしいです。 また、もしC言語で組めれば、やっぱりオブジェクト指向言語よりも早いのでしょうか? 大体でもよいので、分かる方いたら教えてください。 よろしくお願いします。

専門家に質問してみよう