完全菜鸟七天学会建网站,怎么给网站绑定域名,企点下载官网,手机百度屏蔽我网站关键词c 作用域和名字控制
一、::(双冒号) 作用域
::运算符是一个作用域如果::前面什么都没有加 代表是全局作用域
二、命名空间#xff08;namespace)
1、namespace
本质是作用域,可以更好的控制标识符的作用域命名空间 就可以存放 变量 函数 类 结构体 …
2…c 作用域和名字控制
一、::(双冒号) 作用域
::运算符是一个作用域如果::前面什么都没有加 代表是全局作用域
二、命名空间namespace)
1、namespace
本质是作用域,可以更好的控制标识符的作用域命名空间 就可以存放 变量 函数 类 结构体 …
2、命名空间的使用 1、命令空间的定义必须定义在全局范围 2、命名空间下可以存放 变量函数 结构体 类 3、命名空间可以重名 重名的命名空间相当于做合并4、操作命名空间可以嵌套命名空间 5、命名空间可以取别名 6、命名空间可以没有名字 7、命名空间中的函数可以先声明,在外部定义。定义时需要加上命名空间作用域 #include iostream
using namespace std;namespace A
{int a 10;void fun(){cout hello namespace endl;}void function(int val);
}
void A :: function(int val){cout hello function endl;
}
namespace B
{int a 10;int b 20;
}
namespace C
{int a 20;namespace D{int a 10;}
}void print(){cout namespaceA a A :: a endl;cout namespaceB a B :: a endl;cout namespaceB b B :: b endl;A :: fun();cout namespaceD a C :: D :: a endl;
}int main(){print();
}3、无名字的命名空间 如果命名空间没有名字那么这个命名空间内的所有成员都被编译器加上了static修饰 只能被当前文件调用 这个属于内部链接属性 namespace{
int a10:
void func(){cout hello namespace endl:}4、命名空间取别名
namespace newname oldname; 三、using声明和using编译指令
1、using声明 如果在某个空间内的变量过对象或函数要频繁的访问不想次次都要加上双冒号作用域时就可以用到using声明。
#include iostream
using namespace std;
namespace A
{int a 100;void index(){cout hello endl;}
}void fun(){
//多次访问A下面的a旧的加上作用域::cout A :: a endl;cout A :: a endl;cout A :: a endl;//那可以用using来声明解决不要每次都要写这个作用域using A a;cout a endl;cout a endl;cout a endl;index();
}int main(){return 0
}注意当using声明的标识符和其他标识符有作用域的冲突时,会产生二义性
void fun(){int a 10;//errusing A a;cout a endl;cout a endl;cout a endl;
}2、using编译指令 使得整个命名空间标识符可用。
namespace nameA
{int a 10;void fun(){cout hello endl;}
}void function(){int a 100;//如果在using编译指令前也一个相同的变量就不会像using声明一样有冲突。using namespace nameA;//此时a的值是局部变量的值100cout a endl;fun();
}建议用using编译指令取代using声明来使用。