C++实例——命名空间


//范例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盘目录下一样,不好管理。而使用命名空间就可以根据需要把相关的类放在同一个命名空间中,实现类的分类管理,给类库添加了结构和层次组织关系。

你可能感兴趣的:(C++实例——命名空间)