[C++]namespace命名空間

#include <iostream>

//namespace命名空間

namespace NameSpaceA{
int a = 0;
}

namespace NameSpaceB{
int a = 1;
namespace NameSpaceC{
struct Teacher{
char name[11];
int age;
};
}
}

int main()
{
using namespace NameSpaceA;
using NameSpaceB::NameSpaceC::Teacher; // ::域作用符

printf("a = %d\n", a);
printf("a = %d\n", NameSpaceB::a);

Teacher t1 = {"jlran", 12};
printf("t1.name = %s\n", t1.name);
printf("t1.age = %d\n", t1.age);
getchar();
return 0;
}


/*
C++命名空間的使用:
使用整個命名空間:using namespace name;
使用命名空間中的變量:using name::variable;
使用默認命名空間中的變量:::variable
默認情況下可以直接使用默 認命名空間中的所有標識符

C中的命名空間
在C語言中只有一個全局作用域
C語言中所有的全局標識符共享同一個作用域
標識符之間可能發生衝突
C++中提出了命名空間的概念
命名空間將全局作用域分成不同的部分
不同命名空間中的標識符可以同名而不會發生衝突
命名空間可以相互嵌套
全局作用域也叫默認命名空間

std是c++標準命名空間,c++標準程序庫中的所有標識符都被定義在std中,比如標準庫中的類iostream、vector
等都定義在該命名空間中,使用時要加上using聲明(using namespace std)  或using指示(如std::string、
std::vector<int>).

在C++中,名稱(name)可以是符號常量、變量、宏、函數、結構、枚舉、類和對象等等。爲了避免,
在大規模程序的設計中,以及在程序員使用各種各樣的C++庫時,這些標識符的命名發生衝突,
標準C++引入了關鍵字namespace(命名空間/名字空間/名稱空間/名域),可以更好地控制標識符的作用域

1)當使用<iostream>的時候,該頭文件沒有定義全局命名空間,必須使用namespace std;這樣才能正確使用cout。
若不引入using namespace std ,需要這樣做。std::cout。
2)c++標準爲了和C區別開,也爲了正確使用命名空間,規定頭文件不使用後綴.h。
3)C++命名空間的定義: namespace name {  …  }
4)using namespace NameSpaceA;
5)namespce定義可嵌套
*/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章