C++ - C 言語と C++ の違い

序文

C 言語と C++ を学習したことのある学生は、この 2 つの言語の本質的な違いは何なのか、またその違いは何なのか、このような疑問を抱いたことがあるのではないでしょうか。さて、私が C 言語の学習を終えて C++ を学習したときにこの疑問を抱いたのですが、ヘッダー ファイル、いくつかの入出力ステートメント、そして最も重要な構文形式は C 言語とまったく変わらないようです。どれも普通に使えます。私が聞いた両者の最大の違いは次の文です。C 言語はプロセス指向プログラミング言語であり、C++ はオブジェクト指向プログラミング言語です。当時は両者の違いが全く分かりませんでしたが、今になって少しずつ両者の関係性が理解できるようになりました。

トピックを開始します

C 言語と C++ ヘッダー ファイルの違い

最初はなぜ C 言語のヘッダファイルが C++ で使えるのか非常に戸惑いましたが、C++ のヘッダファイルが C 言語でも使えるのかどうかも検証したかったのです。その時は検証する時間がなかったので、今日検証してみました。C 言語のヘッダー ファイルは C++ では通常どおり使用できますが、C++ のヘッダー ファイルは C 言語では使用できません。

 

ご覧のとおり、C 言語ファイルで C++ の標準入出力ヘッダーを使用すると、コンパイラによってエラーが報告されます。報告されるエラーも非常にシンプルで理解しやすいものです。つまり、iostream などのファイルが存在せず、コンパイラが終了します。

ただし、C++ファイル内でC言語ヘッダファイルを呼び出す場合には全く問題ありません。

 この時点で、C言語はC++のサブセットであると考えるようになりました。C言語で使えるものはC++でも使えますが、C++で使えるものはC言語では使えません。これはサブセットではありません。 . . 検証後のC言語とC++の関係についての私の理解です。

驚いたことに、C 言語のヘッダー ファイルは C++ で使用できますが、C++ のヘッダー ファイルは C 言語では使用できません。違いはないようで、すべて英語の文字列 <> です。ある日、 math.h と cmath に出会うまでは。当時私は、2 つのヘッダー ファイルの機能は同じに見えるのに、なぜ名前が違うのか、と不思議に思ったのですが、後になってようやく問題が分かりました。

cmath と math.h の違い: cmath は標準 C++ で推奨されているライブラリであり、math.h は C 言語の古いヘッダー ファイルです。

初期の標準ライブラリは、すべての関数をグローバル ドメインに実装し、拡張子 .h を付けてヘッダ ファイル内で宣言していたことが判明しました。これを使用する場合は、対応するヘッダ ファイルをインクルードするだけで済みます。これは、C ライブラリと区別するためです。 C++ ヘッダー ファイルには .h が含まれておらず、古いコンパイラでも <iostream.h> 形式がサポートされていますが、後続のコンパイラではサポートされなくなっているため、 <iostream>+std メソッド。

この時点で、C 言語と C++ のヘッダー ファイルを区別する方法がわかりました。

名前空間の使用

ヘッダー ファイルの違いを区別した後、別の質問が生まれました。C 言語ではそれを直接含めることができるのに、C++ では using 名前空間 std を追加する必要があるのはなぜですか? すでに iostream の標準入出力ファイルが含まれているのに、using namespace std; を追加する必要があるのはなぜですか?

これは、定義する識別子と標準ライブラリの識別子の重複を避けるために、C++ の標準ライブラリのすべて (つまり、iostream のすべて) が std という名前の名前空間に配置されるためです。標準ライブラリの対応する領域の内容を展開せずに、関連するヘッダ ファイルを作成しても、標準ライブラリのメンバを使用することはできません。このコードは、標準ライブラリのすべてがグローバル ドメインに展開されることを意味します。#include <iostrem> を使用するときに using namespace std; を使用するのはなぜですか? ファイル iostream 内のすべてが名前空間 std で定義されているためです。

この時点で、名前空間の概念と機能を理解しました。その後、C# を学習したときに、独自の名前空間も自分で定義しました。

C 言語と C++ の最大かつ最も本質的な違い

まず、C++ は C 言語に基づいて開発されているため、C++ には C 言語のすべての機能が含まれており、いくつかの新機能も導入されています。これは、C++ が C 言語のすべてのライブラリ関数と構文規則を使用できることを意味します。

次に、C++ はオブジェクト指向プログラミング言語ですが、C 言語は手続き型プログラミング言語です。オブジェクト指向プログラミングを使用すると、開発者はクラス、オブジェクト、継承、ポリモーフィズムなどの概念を使用してコードを編成および管理できるため、C++ の柔軟性と拡張性が高まります。

さらに、C++ には、テンプレート、例外処理、名前空間などのいくつかの新機能も導入されています。テンプレートを使用すると、開発者はさまざまなデータ型を操作できるユニバーサル コードを作成できます。例外処理メカニズムにより、プログラム内のエラーや例外を適切に処理できます。名前空間は、開発者がコードを編成および管理し、名前の競合を回避するのに役立ちます。

さらに、C++ は関数のオーバーロードと演算子のオーバーロードもサポートしているため、開発者はさまざまなパラメーターの型や操作オブジェクトに基づいてさまざまな関数や演算子の動作を定義できます。

一般に、C++ は C 言語よりも強力で柔軟性があり、より多くの機能とツールを提供するため、開発者は複雑なプログラムをより効率的に作成できます。ただし、一部の単純なアプリケーション シナリオでは、C 言語の方が簡潔で効率的である場合があります。どの言語を使用するかは、特定のニーズとプロジェクトの要件によって異なります。

要約する

上の段落では、C 言語と C++ の関係の違いを要約しています。一般に、C++ は C 言語から派生したものであり、構文規則は同じですが、依然として 2 つの異なるプログラミング言語です。また、C++ が C 言語のヘッダー ファイルを使用できる理由は、C++ に C 言語のすべてのライブラリ関数が含まれているためです。最も不正確ですが、最も単純かつ明確に言えることは、C++ は C 言語に基づいて多くの新しいものを追加し、元の古いものはすべて保持しているということです。

おすすめ

転載: blog.csdn.net/qq_64241302/article/details/132364521