命名空间
一.为什么要使用命名空间???
我们知道在C++中,变量,函数和类都是大量存在的,这些变量,函数和类的名称都存在于全变量命名中,会导致很多冲突,从而在C++中我们使用命名空间来避免这种冲突。命名空间中namespace是关键字。
二.命名空间的定义
1.
//普通的命名空间
namespace N //N为命名空间的名称
{
//命名空间中的内容,既可以定义变量也可以定义函数
int a = 10;
int b = 30;
int Add(int left, int right)
{
return left + right;
}
int Sub(int left, int right)
{
return left - right;
}
}
//命名空间可以嵌套
namespace N1
{
int a = 50;
int c = 50;
int A = N::a;
int Mul(int left, int right)
{
return left * right;
}
}
2.特殊的是在同一个工程中可能会存在同一个名称相同的命名空间,这时候编译器会将他们整合在一起为一个命名空间。
namespace N1
{
int a = 50;
int c = 50;
int Mul(int left, int right)
{
return left * right;
}
}
namespace N1
{
int d = 5;
int e = 5;
int Div(int left, int right)
{
return left / right;
}
}
using namespace N1;
int main()
{
cout << N1::a << endl;
cout << N1::d << endl;
cout<<N1::
cout << N1::Div(10,2) << endl;
cout << Mul(10, 10) << endl;
system("pause");
return 0;
}
从上边的代码我们可以很清楚的看出两个N1名称相同可以调用其中的内容
3.没有名称的命名空间
namespace
{
int g = 6;
int f = 3;
int sub(int left, int right)
{
return left - right;
}
}
没有名称的命名空间,他的成员只在声明该命名空间的文件中可以访问,访问时不需加命名空间名称,对其他文件该命名空间内容不可见。
因为在访问时其中内容时必须是空间命名名称+::(作用域限定符)(但是在没有名称的命名空间中因为没有名称所以没法在其他文件中访问)
【说明】:本质上讲,一个命名空间就定义了一个范围,在命名空间中定义的任何东西都局限于该命名空间中。没有名称的命名空间可以创建只在声明它的文件中才可见的标识符。也就是说,只有在声明这个命名空间的文件中,它的成员才是可见的,它的成员才可以被直接访问,不需要命名空间名称来修饰。对于其他文件,该命名空间是不可见的。把全局名称的作用域限制在声明他的文件中的一种方式就是把它的声明为静态的,尽管C++支持全局静态,但最好的方式还是使用未命名的空间。
三.访问空间命名的两种方式
1.使用using namespace +命名空间名称
using namespace N1;
int main()
{
cout << N1::a << endl;
cout << N1::d << endl;
cout << N1::Div(10,2) << endl;
cout << Mul(10, 10) << endl;
system("pause");
return 0;
}
2.命名空间的名称 + ::+ 变量名称或者函数
int main()
{
N1::a = 0;
cout << "a=" << N1::a << endl;
system("pause");
return 0;
}
相关阅读
C++中STL里提供了许多字符串操作的函数,下面是字符串查找方面的部分函数用法简介: 1.find() 查找第一次出现的目标字符串: #include<
CocosCreator 支持c++代替CocosStudio cocosStuido 早就不更新了,而且启动的时候,经常死机。 需要拔掉网线,才能持续编写。 所以作为
简介:MessageBox指的是显示一个模态对话框,其中包含一个系统图标、 一组按钮和一个简短的特定于应用程序消息,如状态或错误的信息。
转自:http://blog.sina.com.cn/s/blog_9d85c1900102v1rm.html区别:主要是两者的参数不同功能:相似 substr :返回一个从
首先:为什么需要动态定义数组呢?这是因为,很多情况下,在预编译过程阶段,数组的长度是不能预先知道的,必须在程序运行时动态的给出但