C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++での名前空間とクラスの違い


このセクションでは、C++の名前空間とクラスの違いを確認します。名前空間とクラスは2つの異なる概念です。クラスはデータ型です。クラスは基本的に構造の拡張バージョンです。クラスにはデータメンバーと関数をメンバーとして含めることができますが、名前空間には変数と関数を1つにグループ化することで含めることができます。

名前空間をオブジェクトとして作成することはできません。この概念は、類似の関数、クラス、変数などを区別するための追加情報として使用されます。変数、同じ名前の関数は、異なる名前空間に配置できます。

ここで、名前空間とクラスのいくつかの重要な違いを指摘しましょう。

  • 名前空間は、衝突しないように識別子のグループを作成するために使用されます。クラスを使用して、そのクラスのインスタンスを作成する必要がありますが、名前空間の場合、これは当てはまりません。

  • 名前空間には、「using」宣言を使用します。クラスの場合、それから派生しない限り、それは不可能です。

  • 名前空間を再度開いて、翻訳単位全体に要素を追加できます。これはクラスを使用して行うことはできません。

namespace my_namespace {
   int function1();
}
namespace my_namespace {
   int function1();
}
  • クラスの場合、次のコードは適切ではありません:

class my_class {
   int function1();
};
class my_class {
   int function1();
};
  • 名前のない名前空間を使用することはできますが、名前のないクラスを使用することはできません。これによりエラーが発生します。

namespace{ //Legal
   int function1();
};
class { //create error
   int function1();
};

  1. C#でのクラスと構造の違い

    クラスと構造を区別するには、最初に、データの保持と定義のコンテキストでは、構造とクラスの両方が同等であるように見えることを理解する必要があります。これらは両方とも、データメンバーにいくつかのデフォルト値を定義および保持することができます。しかし、この文脈を超えてそれらを考慮すると、クラスは構造と比較して機能性とともにより多くの柔軟性を提供します。 クラスと構造の重要な違いは次のとおりです。 Sr。いいえ。 キー クラス 構造 1 データ型 クラスで定義されたデータは参照としてメモリに保存され、アクセスするための特定のアドレスを持っているため、クラスは参照型であると言えます。

  2. Scalaの特性と抽象クラスの違い。

    特性 トレイトはJavaのインターフェースに似ており、traitキーワードを使用して作成されます。 抽象クラス 抽象クラスはJavaの抽象クラスに似ており、abstractキーワードを使用して作成されます。 例 以下は、特性と抽象クラスの使用法を示すScalaのプログラムです。 trait SampleTrait {    // Abstract method    def test    // Non-Abstract method    def tutorials() {     &