logo

C と C++ の違い

間の類似点 C そして C++ は:

  • どちらの言語も同様の構文を持っています。
  • 両方の言語のコード構造は同じです。
  • 両方の言語のコンパイルは似ています。
  • これらは同じ基本構文を共有します。 C の演算子とキーワードのほぼすべてが C++ にも存在し、同じことを行います。
  • C++ は C よりも文法がわずかに拡張されていますが、基本的な文法は同じです。
  • どちらの基本メモリ モデルもハードウェアに非常に近いです。
  • スタック、ヒープ、ファイル スコープ、静的変数の同じ概念が両方の言語に存在します。



間の違い C そして C++ は:
C++ は、多くの場合、C のスーパーセットとみなされます。C++ は、クラスを備えた C としても知られています。これは、C++ が最初に作成されたときはほぼ真実でしたが、この 2 つの言語は時間の経過とともに進化し、C には、どちらかが持っていなかった多くの機能が取り入れられました。現在のバージョンの C++ には存在しないか、まだ C++ のどのバージョンにも組み込まれていません。とはいえ、C++ は依然としてほとんどが C のスーパーセットです。 オブジェクト指向プログラミング 例外処理 、テンプレート、およびより広範な標準ライブラリ。

以下の表は、C と C++ のより明白で一般的な違いのいくつかを示しています。言語間および言語のバージョン間には、さらに多くの微妙な違いがあります。

C C++
C は、1969 年から 1973 年にかけて AT&T Bell Labs で Dennis Ritchie によって開発されました。 C++ は 1979 年に Bjarne Stroustrup によって開発されました。
C はポリモーフィズム、カプセル化、継承をサポートしていません。これは、C がオブジェクト指向プログラミングをサポートしていないことを意味します。 C++ のサポート 多態性 カプセル化 、 そして 継承 それはオブジェクト指向プログラミング言語だからです。
C は (ほとんど) C++ のサブセットです。 C++ は (ほとんどの場合) C のスーパーセットです。
の数 キーワード Cで:
※C90:32
※C99:37
※C11:44
※C23:59
の数 キーワード C++ では:
※C++98:63
* C++11: 73
※C++17:73
※C++20:81
コードの開発については、C がサポートしています 手続き型プログラミング C++ は両方をサポートしているため、ハイブリッド言語として知られています。 手続き的な そして オブジェクト指向プログラミングのパラダイム
C は手続き型プログラミング言語であるため、データと関数は分離されます。 データと関数は、C++ のオブジェクトの形式で一緒にカプセル化されます。
C は情報の隠蔽をサポートしていません。 データ構造と演算子が意図したとおりに使用されることを保証するために、データはカプセル化によって隠蔽されます。
組み込みデータ型は C でサポートされています。 組み込みおよびユーザー定義のデータ型は C++ でサポートされています。
C は手続き型プログラミング言語であるため、C は関数駆動型言語です。 C++ はオブジェクト指向プログラミングであるため、オブジェクト駆動型言語です。
関数と演算子のオーバーロードは C ではサポートされていません。 関数と演算子のオーバーロードは C++ でサポートされています。
C は関数駆動型言語です。 C++ はオブジェクト駆動型言語です
C の関数は構造体内で定義されません。 C++ では、構造体内で関数を使用できます。
名前空間機能は C 内には存在しません。 名前空間 は C++ によって使用され、名前の衝突を回避します。
標準IOヘッダーは stdio.h 標準IOヘッダーは iostream.h
参照変数は C ではサポートされていません。 参照変数は C++ でサポートされています。
バーチャル機能とフレンド機能は C ではサポートされていません。 バーチャル そして フレンド機能 は C++ でサポートされています。
C は継承をサポートしていません。 C++ は継承をサポートしています。
C ではデータに焦点を当てるのではなく、メソッドやプロセスに焦点を当てます。 C++ はメソッドや手順ではなくデータに焦点を当てます。
C が提供する malloc() そして calloc() のための関数 動的メモリ割り当て 、 そして 無料() メモリの割り当て解除のため。 C++ が提供する 新しいオペレーター メモリ割り当てと 削除演算子 メモリの割り当て解除のため。
例外処理の直接サポートは C ではサポートされていません。 例外処理 C++ でサポートされています。
scanf() C の入出力には printf() 関数が使用されます。 シンとクウト のために使用されます C++ での入出力
C 構造体にはアクセス修飾子がありません。 C++ 構造体にはアクセス修飾子があります。
C プログラミング言語には厳密な型チェックはありません。 厳密な型チェックは C++ で行われます。 C コンパイラで正常に実行されるプログラムの多くは、C++ コンパイラでは多くの警告やエラーが発生します。
C はオーバーロードをサポートしていません C++ はオーバーロードをサポートしています
共用体を使用した型の語呂合わせが可能です (C99 以降) 共用体を使用した型の語呂合わせは未定義の動作です (非常に特殊な状況を除く)
名前付きイニシャライザが順序どおりに表示されないことがある 名前付きイニシャライザは構造体のデータ レイアウトと一致する必要があります
ファイル拡張子は .c です ファイル拡張子は .cpp または .c++ または .cc または .cxx です。
メタプログラミング: マクロ + _Generic() メタプログラミング: テンプレート (マクロは引き続きサポートされていますが、非推奨です)
C には 32 個のキーワードがあります C++ には 97 個のキーワードがあります