//范例1:定义两个命名空间nsA和nsB,它们有相同的成员函数print()
//知识点:命名空间的定义
#include
usingnamespace std; //using指令,引入标准C++库命名空间std
namespace nsA //定义一个命名空间nsA
{
void print()
{
cout << "调用nsA中的函数print()." << endl;
}
}
namespace nsB //定义一个命名空间nsB
{
void print()
{
cout << "调用nsB中的函数print()." << endl;
}
}
int main(int argc, char* argv[])
{
nsA::print(); //调用命名空间nsA中的函数print(),其中"::"是作用域解析运算符
nsB::print(); //调用命名空间nsB中的函数print()
system("pause");
return 0;
}
你还在为没有学习平台而苦恼吗?你还在为没有学习资料而烦心吗?你还在为没人指导而担忧吗?可以评论区留言 C++。
//范例2:命名空间别名的使用
//知识点:命名空间的名称
#include
#include
usingnamespace std; //using指令,引入标准C++库命名空间std
namespace International_Business_Machine_Corporation
{
string Name; //成员变量
void print() //成员函数
{
cout << Name << endl; //输出变量Name
}
}
int main(int argc, char* argv[])
{
//没有定义别名,使用不便
International_Business_Machine_Corporation::Name = "Zhangsan"; //赋值为Zhangsan
International_Business_Machine_Corporation::print(); //输出
//定义命名空间别名为IBM
namespace IBM = International_Business_Machine_Corporation;
IBM::Name = "Lisi"; //赋值为Lisi
IBM::print(); //输出
IBM::Name = "Wangnannan"; //赋值为Wangnannan
IBM::print(); //输出
system("pause");
return 0;
}
//范例3:无名命名空间
//知识点:命名空间的名称
#include
#include
usingnamespace std; //using指令,引入标准C++库命名空间std
namespace//定义一个无名命名空间
{
int i; //成员变量
void f(); //成员函数
{
}
}
int main(int argc, char* argv[])
{
i = 0; //可直接使用无名命名空间的成员i
f(); //可直接使用无名命名空间的成员f()
}
//范例4:using 声明
//知识点:命名空间成员的使用
#include
#include
using std::cin; //using声明,表明要引用标准库std中的成员cin
using std::string; //using 声明,表明要引用标准库std中的成员string
int main(int argc, char* argv[])
{
string temp; //正确,string已经声明,可以直接使用
cin >> temp; //正确,cin已经声明,可以直接使用
//cout << temp; 错误,cout未声明,无法直接使用
std::cout << temp; //正确,通过全名引用cout
system("pause");
return 0;
}
//范例5:using指令,范例4可改写如下
//知识点:命名空间成员的使用
#include
#include
usingnamespace std; //using指令,表明命名空间std中的所有成员都可直接使用
int main(int argc, char* argv[])
{
string temp;
cin >> temp;
cout << temp;
system("pause");
return 0;
}
//范例6:using指令的作用域
//知识点:命名空间成员的使用
#include
#include
usingnamespace std; //using指令,全局范围内声明的
namespace nsA //定义命名空间nsA
{
int var = 12; //命名空间nsA中的成员var
}
namespace nsB //定义命名空间nsB
{
double var = 2.6308; //命名空间nsB中的成员var
}
int main(int argc, char* argv[])
{
{
//加花括号,限定using指令的作用域
usingnamespace nsA; //using指令,本语句块内使用nsA
cout << "nsA中的var=" << var << endl; //输出nsA中的变量var
}
{
//加花括号,限定using指令的作用域
usingnamespace nsB; //using指令,本语句块内使用nsB
cout << "nsB中的var=" << var << endl; //输出nsB中的变量var
}
system("pause");
return 0;
}
//范例7:将两个同名类放在不同的命名空间中
//知识点:类和命名空间的关系
#include
#include
usingnamespace std; //using指令,全局范围内声明的
namespace nsA //定义一个命名空间nsA
{
class myClass //命名空间nsA中的成员类
{
public:
void print()
{
cout << "调用命名空间nsA中类myClass的函数print()." << endl;
}
};
}
namespace nsB //定义一个命名空间nsB
{
class myClass //命名空间nsB中的成员类
{
public:
void print()
{
cout << "调用命名空间nsAB中类myClass的函数print()." << endl;
}
};
}
int main(int argc, char* argv[])
{
nsA::myClass ca; //声明一个nsA中类myClass的实例ca
ca.print(); //调用类实例ca中的print(),输出结果
nsB::myClass cb; //声明一个nsB中类myClass的实例cb
cb.print(); //调用类实例cb中的print(),输出结果
system("pause");
return 0;
}
注意:
1.访问命名空间成员有三种方法:使用作用域解析运算符;使用using说明;使用using指令。
2.类和命名空间的关系:命名空间是类的一种组织管理方法。如果把类比作计算机里的文件,命名空间就好比文件夹。如果没有命名空间,就好比把计算机里的所有文件都放到c盘目录下一样,不好管理。而使用命名空间就可以根据需要把相关的类放在同一个命名空间中,实现类的分类管理,给类库添加了结构和层次组织关系。