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
-
PHPの名前解決ルール
はじめに PHPコードでは、名前空間の外観は次のルールに従って解決されます- 名前空間区切り記号のない名前空間識別子( / )は、現在の名前空間を参照していることを意味します。これは修飾されていない名前です。 myspace \ space1のように区切り記号が含まれている場合 、myspaceの下のサブネームスペースspace1に解決されます。このようなタイプの名前空間は相対名前空間です。 完全修飾名前空間の名前は\文字で始まります。たとえば、\myspaceまたは\ myspace \ space1 。 完全修飾名は絶対名前空間に解決されます。例: \ my
-
PHP名前空間の概要
はじめに PHPでは、名前空間を使用すると、同じ名前のクラス/関数/定数を競合することなく異なるコンテキストで使用できるため、これらのアイテムをカプセル化できます。 名前空間 関連性に応じたクラス/関数などの論理的なグループ化です。同じ名前のファイルが2つの異なるフォルダーに存在できるのと同じように、特定の名前のクラスを2つの名前空間で定義できます。さらに、アクセスするファイルの完全なパスを指定するため、名前空間とともにクラスのフルネームを指定する必要があります。 アプリケーションコードが大きくなると、名前空間の使用が重要になります。各クラス/関数に一意の名前を付けるのは面倒で、正確にエレ