主な違い: CとC ++は2つの異なるコンピュータプログラミング言語です。 C ++はCプログラミング言語から開発されました。 しかし、それらは性質がかなり異なります。 最も明白な違いは、Cは手続き指向言語であるのに対し、C ++は手続き型プログラミングとオブジェクト指向プログラミングの両方をサポートしているため、ハイブリッド言語と呼ばれることが多いことです。
Cは、現在最も古いプログラミング言語の1つであり、最も広く使用されているプログラミング言語の1つです。 以前はアセンブリ言語でコーディングされていたアプリケーションで常に使用されています。 これには、UNIXコンピュータのオペレーティングシステムが含まれます。 また、Cは、C#、D、Go、Java、JavaScript、Limbo、LPC、Perl、PHP、Python、およびUnixのCシェルなど、多くの最新のプログラミング言語に直接または間接的に影響を与えています。 これらの新しい言語にもかかわらず、Cは依然として人気のあるプログラミング言語です。
C ++はもともとCの拡張として始まりました。それはCとソースとリンクの互換性を持つように設計されました。しかし、それはクラス、仮想関数、演算子オーバーロード、多重継承、テンプレート、例外処理などを追加しました。それ自体でプログラミング言語と見なされるのに十分です。 それはもともとISO / IEC 14882:1998認定プログラミング言語として1998年に承認されました。 今日、C ++は現在ハードウェア設計に広く使用されています。
Cは、ステートメント終了記号としてセミコロン(;)を使用し、ステートメントのブロックをグループ化するための中括弧({})を使用する汎用プログラミング言語です。 それは構造化プログラミングのための機能を持ち、その設計は典型的な機械語命令に効率的にマッピングできる構造を提供します。 また、字句変数のスコープと再帰を可能にし、多くの意図しない操作を防ぐ静的型システムを持っています。
ただし、C ++と比較すると、Cには多くの制限があります。 Cはオブジェクト指向ではないため、OOPSの概念をサポートしていません。 Cは関数と演算子のオーバーロードをサポートしていません。 構造体内で関数を使用することはできません。 仮想関数や参照変数、あるいは例外処理はサポートされていません。 参照変数もサポートされていません。 さらに、Cはカプセル化もデータ保護も行いません。 対照的に、C ++はこれらの機能のすべてをサポートしています。
この2つの言語は、アドレスメモリの機能、入出力、およびGUIプログラミングの方法も異なります。 例えば、Cはメモリの割り当てと割り当て解除にcalloc()、malloc()、free()関数を使用しますが、C ++はnewとdeleteを使用します。 Cは入出力にscanf()とprintf()を使用しますが、C ++はcin >>とcout <<演算子を使用します。 C ++はGUIプログラミング用のGTKツールをサポートしていますが、C ++はGUIプログラミング用のQtツールをサポートしています。 もう1つの違いは、Cでは、プログラムの先頭ですべての変数を宣言する必要があるのに対し、C ++では、変数をプログラム内の任意の場所で宣言できることです。
さらに、C ++はCよりも使いやすいため、通常は習得が容易であると考えられています。C++には、特にCフレームワークに慣れていない人にとってはコーディングを容易にする多数の追加機能があります。 しかし、多くの人がそれが実際に重要であると主張しています。 この2つの言語は大きく異なるため、実際は互いに独立した2つの異なる言語にすることができます。 留意すべき点の1つは、CはC ++よりもはるかに構造化されているのに対し、C ++はCより表現力があり抽象的であるように設計されていることです。
CとC ++の比較
C | C ++ | |
設立 | 1969年から1973年の間にAT&T Bell LabsでDennis Ritchieによって開発されました。 | 1979年からベル研究所のBjarne Stroustrupによって開発されました。 |
ソースコード | フリーフォーマットプログラムのソースコード | もともとCプログラミング言語から開発された |
言語 | 手続き指向の言語 | 手続き型プログラミングとオブジェクト指向プログラミングの両方のパラダイムをサポートします。 したがって、それはしばしばハイブリッド言語と呼ばれます。 |
アプローチ | トップダウンアプローチに従います。 | ボトムアップアプローチに従います。 |
関係 | CはC ++のサブセットです。 C ++コードを実行することはできません。 | C ++はCのスーパーセットです。C++はほとんどのCコードを実行できますが、CはC ++コードを実行できません。 |
ドライブ | 機能駆動型言語 | オブジェクト駆動言語 |
フォーカス | データではなくメソッドやプロセスに焦点を当てています。 | メソッドやプロシージャではなくデータに焦点を当てています。 |
ビルディングブロック | 関数 | オブジェクト |
キーワード | 32個のキーワードを含む | 52個のキーワードを含む |
OOPSの概念 | 'C'言語は手続き指向言語であるため、クラス、オブジェクト、継承、多態性、データ隠蔽などのOOPSの概念をサポートしていません。 | オブジェクト指向言語として、C ++はクラス、オブジェクト、データ隠蔽、多態性、継承、抽象化などをサポートします。 |
関数 |
|
|
メモリ機能 | calloc()、malloc()、およびfree()関数を使用して、メモリの割り当てと割り当て解除を行います。 | 同じ目的で演算子newとdeleteを使用します。 |
カプセル化 | サポートしていません。 データと機能は別々の自由な実体です。 | カプセル化をサポートします。 データと機能は、オブジェクトの形でまとめてカプセル化されています。 オブジェクトクラスは、オブジェクトの構造の青写真を提供します。 |
情報の隠蔽 | Cは情報の隠蔽をサポートしていません。 ここで、データは自由な実体であり、外部のコードによって操作することができます。 | カプセル化はデータを隠し、データ構造と演算子が意図したとおりに使用されるようにします。 |
データ | 組み込みおよびプリミティブデータ型をサポートします。 オブジェクト指向ではないため、データは保護されません | 組み込みとユーザー定義の両方のデータ型をサポートします。 データはC ++で保護(非表示)されています |
レベル | 低レベル言語 | 中級言語 |
入出力 | 'C'言語は入力と出力にscanf()とprintf()を使用します。 | 'C ++'言語は、入出力にcin >>およびcout <<演算子を使用します。 |
変数の宣言 | Cでは、プログラムの先頭ですべての変数を宣言する必要があります。 | C ++では、変数は使用前にプログラム内の任意の場所で宣言できます。 |
多重宣言 | グローバル変数の多重宣言は許されます。 | グローバル変数の多重宣言はできません。 |
マッピング | データと機能の間のマッピングは困難で複雑です。 | 「オブジェクト」を使用してデータと関数の間のマッピングを使用することができます |
GUIプログラミング | CはGUIプログラミングのためのGTKツールをサポートします | C ++はGUIプログラミング用のQtツールをサポートします |
継承 | 継承はCでは不可能です | 継承はC ++で可能です |
ファイル拡張子 | ファイル拡張子.c | ファイル拡張子.cpp |
デフォルトヘッダファイル | C言語で使用されるデフォルトのヘッダーファイルはstdio.hです。 | C ++で使用されるデフォルトのヘッダーファイルはiosteam.hです。 |
CとC ++の違いのいくつかの例:
例 | C | C ++ |
変数宣言 | 一番上だけ: int i; (i = 10; i <10; i ++)の場合 | プログラムのどこにでも: (int i = 10; i <10; i ++)の場合 |
メモリ割り当て | Malloc: int * x = malloc(sizeof(int)); int * x_array = malloc(sizeof(int)* 10); | 新しい: int * x = new int; int * x_array = new int [10]; |
メモリを解放する | 無料 free(x); free(x_array); | 削除します。 xを削除します。 delete [] x_array; |