CとC++の主な違いは、Cが構造化プログラミングをサポートしているのに対し、C++は構造化プログラミングだけでなくオブジェクト指向プログラミング(OOP)もサポートするCのスーパーセットである点です。
C言語は汎用的なプログラミング言語で、現代のほとんどのプログラミング言語の基礎となっている言語です。
一方、C++はC言語の拡張版です。
どんなCのプログラムも有効なC++のプログラムです。
また、C++はクラスを持つC言語と考えることができます。
したがって、C++でOOPの概念を実装することができる。
Cとは
C言語は、ベル研究所のDennis Ritchieによって開発された高水準の汎用プログラミング言語です。
C言語は構造化プログラミング言語です。
したがって、ループ(for, while, do while)、関数、判定(if/else)などの機能があります。
C言語は、Python、Java、Perl、Rubyなど他の現代言語の基礎となっている。
C言語では、コンパイラを使ってソースコードを同等の機械語に変換するため、プログラムの実行速度が速い。
また、豊富なライブラリが用意されている。
そのため、プログラマはライブラリにある機能を利用して、効率的なプログラムを書くことができる。
C言語を使って開発できるアプリケーションには、オペレーティングシステム、ネットワークドライバ、コンパイラ、データベース、組み込みシステム、言語インタープリタ、テキストエディタなどがあります。
C++とは
C++は、ベル研究所のBjarne Stroustrup氏によって開発されたプログラミング言語です。
C言語よりもさらに多くの機能を備えている。
また、オブジェクト指向プログラミングだけでなく、構造化プログラミングもサポートしています。
そのため、カプセル化、ポリモーフィズム、継承などのオブジェクト指向の概念をC++で実装することができる。
また、STL(Standard Template Library)と呼ばれるライブラリが提供されている。
したがって、プログラマはそのライブラリで利用可能な関数を自分のプログラムで使用することができる。
C++はコンパイラベースの言語です。
コンパイラはソースコード全体を機械語に変換する。
そのため、プログラムの実行速度が非常に速くなる。
C++のこの特性により、さまざまな入力に素早く反応するリアルタイム・システムを開発することができます。
また、画像処理、コンピュータビジョン、ゲーム開発、OSやデバイスドライバ開発などにもC++を利用することが可能です。
CとC++の違い
定義
C言語は構造化プログラミングが可能な汎用プログラミング言語であり、C++は命令型、オブジェクト指向、汎用プログラミングの機能を持ち、低レベルのメモリ操作の機能も備えた汎用プログラミング言語である。
したがって、これがCとC++の主な違いです。
デベロッパー
C言語の開発者はDennis Ritchie、C++の開発者はBjarne Stroustrupです。
メジャーパラダイム
さらに、CとC++の大きな違いは、Cが主に構造化プログラミングをサポートするのに対し、C++は主に構造化およびオブジェクト指向プログラミングをサポートすることである。
オーパーツ
C言語ではOOPのサポートはありませんが、C++ではカプセル化、継承、ポリモーフィズムなどの実装が可能です。
入出力
C言語がscanfやprintf関数で入出力操作を行うのに対し、C++はcinやcoutで入出力操作を行います。
したがって、この点もCとC++の違いです。
データセキュリティ
さらに、データのセキュリティもCとC++の違いの1つです。
Cではデータの安全性はあまり高くありませんが、C++ではOOPによるアクセス修飾子があるため、データの安全性は高くなります。
変数宣言
C言語では、プログラマはプログラムの先頭で変数を宣言する必要があります。
しかし、C++では、プログラマはプログラムのどこででも変数を宣言することができます。
関数と演算子のオーバーロード
CとC++のもう一つの違いは、Cには関数と演算子のオーバーロードの概念がないことです。
しかし、C++はOOPをサポートしているため、関数と演算子のオーバーロードを実装することが可能です。
例外処理
また、C言語には例外処理の仕組みがありませんが、C++には例外処理(try, catch, finallyブロック)が用意されています。
動的メモリ管理
C では、calloc、malloc 関数でメモリを確保し、free 関数でメモリを解放します。
C++では、メモリを確保するためにnew演算子、メモリを解放するためにdelete演算子を使用します。
この点も、CとC++の違いです。
デフォルトのヘッダーファイル
C言語のデフォルトヘッダーファイルは stdio.h であり、C++のデフォルトヘッダーファイルは iostream.h です。
ファイル拡張子
Cプログラムのファイル拡張子は.c、C++プログラムのファイル拡張子は.cppです。
追加機能
C++には、virtual function、friend function、namespace、inline functionがありますが、Cにはこれらの機能はありません。
したがって、この点もCとC++の重要な違いです。
結論
C++はC言語のスーパーセットなので、C++はC言語のコードのほとんどを実行できますが、C++はC言語のコードを実行することができません。
CとC++の違いは、Cが構造化プログラミングをサポートしているのに対し、C++は構造化プログラミングとオブジェクト指向プログラミング(OOP)をサポートするCのスーパーセットである点です。