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

C++の名前空間


同じクラスに同じ名前の2人のZaraがいる状況を考えてみましょう。それらを明確に区別する必要があるときはいつでも、名前とともにいくつかの追加情報を使用する必要があります。たとえば、地域、別の地域に住んでいる場合、母親や父親の名前などです。

C++アプリケーションでも同じ状況が発生する可能性があります。たとえば、xyz()という関数を持つコードを記述していて、同じ関数xyz()を持つ別のライブラリが利用可能であるとします。これで、コンパイラーは、コード内で参照しているxyz()関数のバージョンを知る方法がありません。

名前空間は、この問題を克服するように設計されており、異なるライブラリで使用可能な同じ名前の類似した関数、クラス、変数などを区別するための追加情報として使用されます。名前空間を使用して、名前が定義されているコンテキストを定義できます。本質的に、名前空間はスコープを定義します。

名前空間の定義

名前空間の定義は、次のようにキーワードnamespaceで始まり、その後に名前空間名が続きます–

namespace namespace_name {
   // code declarations
}

関数または変数の名前空間が有効なバージョンを呼び出すには、次のように名前空間名の前に(::)を付けます–

name::code; // code could be variable or function.

#include <iostream>
using namespace std;
// first name space
namespace first_space {
   void func() {
      cout << "Inside first_space" << endl;
   }
}
// second name space
namespace second_space {
   void func() {
      cout << "Inside second_space" << endl;
   }
}
int main () {
   // Calls function from first name space.
   first_space::func();
   // Calls function from second name space.
   second_space::func();
   return 0;
}

出力

Inside first_space
Inside second_space

  1. PHPの名前解決ルール

    はじめに PHPコードでは、名前空間の外観は次のルールに従って解決されます- 名前空間区切り記号のない名前空間識別子( / )は、現在の名前空間を参照していることを意味します。これは修飾されていない名前です。 myspace \ space1のように区切り記号が含まれている場合 、myspaceの下のサブネームスペースspace1に解決されます。このようなタイプの名前空間は相対名前空間です。 完全修飾名前空間の名前は\文字で始まります。たとえば、\myspaceまたは\ myspace \ space1 。 完全修飾名は絶対名前空間に解決されます。例: \ my

  2. PHP名前空間の概要

    はじめに PHPでは、名前空間を使用すると、同じ名前のクラス/関数/定数を競合することなく異なるコンテキストで使用できるため、これらのアイテムをカプセル化できます。 名前空間 関連性に応じたクラス/関数などの論理的なグループ化です。同じ名前のファイルが2つの異なるフォルダーに存在できるのと同じように、特定の名前のクラスを2つの名前空間で定義できます。さらに、アクセスするファイルの完全なパスを指定するため、名前空間とともにクラスのフルネームを指定する必要があります。 アプリケーションコードが大きくなると、名前空間の使用が重要になります。各クラス/関数に一意の名前を付けるのは面倒で、正確にエレ