目次
C言語とC++の互換性
この記事ではC言語とC++の互換性について解説します。
C言語をもとに開発されたC++は、C言語と高い互換性を持っています。
C言語で実現できることはほぼ全てC++でも実装することができます。
ポインタへのアクセスをはじめ、ハードウェアに近い部分まで扱うことができるC言語にオブジェクト指向の概念を取り入れたのがC++という言語です。
ちなみに、C++という名前はC言語をインクリメントしたもので、C言語から1進んだ言語であることが語源となっています。
ですが、C言語のソースコードをそのまま拡張子を変更してもプログラムは動きません。
一部ソースコードを変更しなければなりません。
C言語の機能をC++で使う
C言語の機能をC++で使うには、インクルードファイルを変更する必要があります。
C言語ではインクルードするとき、拡張子「.h」まで記述していましたが、C++ではそれが必要なくなります、
また、C言語のライブラリであることを明示するためにヘッダファイル名の先頭に「c」を付けます。
すなわち、C言語のライブラリであるをC++でインクルードする際は
#include
となります。
※visual studio 2017 community上で、ソースコードを変更しなくても、のまま動作することを確認しました。
開発環境によっては自動で置換してくれる可能性があります。
C++でできること
最後に、C言語からC++への変更点をいくつか紹介します。
オブジェクト指向
C++への最大の変更点です。これにより、わかり易く再利用し易いコードを記述することができます。
例外処理
想定していない動作が発生したとき、それに対する処理を記述することができます。
変数の宣言位置
C言語では各関数の先頭で変数の宣言を行わなければなりませんでした。
この場合変数のスコープはその関数内全てとなり、例えばその関数の最後の方でしか使わない関数は無駄に広いスコープを持つことになります。
C++ではこの欠点を克服しました。
関数内のどこでも変数の宣言が出来るので無駄がなくわかり易いコーディングが出来ます。
例としてfor文のコードを見てみましょう。
C言語の例
for_sample.c
int i; 【処理】 for(i = 0; i < 10; i++) { 【処理】 } 【処理】
C++の例
for_sample.cpp
【処理】 for(int i = 0; i < 10; i++) { 【処理】 } 【処理】
【処理】には何かしらの命令文が複数行入ります。
C++の例ではfor文の()の中で変数の宣言が出来ます。
これによって、for文のループの外でiを変更してしまうミスを減らすことが出来、宣言位置と初期化位置が同じなので読み易くなります。