菜鸟笔记
提升您的技术认知

c 命名空间 namespace的详细讲解-ag真人游戏

命名空间

  • 命名空间 namespace
  • 1、::作用域运算符(表明 数据、方法 的归属性问题)
  • 2、命名空间 namespace 解决命名冲突
    • 2.1:namespace命名空间的定义
    • 2.2:命名空间只能全局范围内定义(以下错误写法)
    • 2.3:命名空间可嵌套命名空间
    • 2.4:命名空间是开放的,即可以随时把新的成员加入已有的命名空间中(常用)
    • 2.5:命名空间 可以存放 变量 和 函数
    • 2.6:命名空间中的函数 可以在“命名空间”外 定义
    • 2.7:无名命名空间,意味着命名空间中的标识符只能在本文件内访问,相当于给这个标识符加上了static,使得其可以作为内部连接
    • 2.8:给命名空间 取个别名
  • 3. using 使用命名空间
    • 3.1、简化了从命名空间的成员访问
    • 3.2、using 使用整个命名空间
    • 3.3、using 指明使用具体的命名空间 成员。(了解就可以)
    • 3.4、using声明碰到函数重载(了解)
    • 3.5、不同命名空间中的 同名成员 使用的时候注意 二义性
  • 总结:
using namespace std;
int a = 10;//全局变量
void test01()
{
  
    int a = 20;//局部变量
    cout<<"局部变量a = "<

2.3:命名空间可嵌套命名空间

namespace a {
  
    int a = 1000;
    namespace b {
  
        int a = 2000;
    }
}
void test03()
{
  
    cout<<"a中的a = "<

2.7:无名命名空间,意味着命名空间中的标识符只能在本文件内访问,相当于给这个标识符加上了static,使得其可以作为内部连接

namespace{
  
int a =10;
void func(){
  cout << "hello namespace "<< endl}
}
void test(){
  
	cout << "a:" << a << endl;
	func();
}

2.8:给命名空间 取个别名

namespace verylongname{
  
int a = 10;
void func(){
   cout << "hello namespace" << endl; }
}
void test(){
  
    namespace shortname = verylongname;
    cout << "verylongname::a : " << shortname::a << endl;
    verylongname::func();
    shortname::func();
}

3.1、简化了从命名空间的成员访问

namespace verylongname {
  
    int a=100;
    void func(){
  cout<<"hello namespace"<

运行结果:

3.5、不同命名空间中的 同名成员 使用的时候注意 二义性

namespace a {
  
    int a = 10;
}
namespace b {
  
    int a = 20;
}
void test09()
{
  
    //此处的a 不知道是a还是b中a
    //cout<<"a = "<

1、命名空间的定义( 不能在 函数内 定义命名空间)
2、使用命名空间的成员 最安全的方式 命名空间名::成员名
3、using namespace 命名空间名;使用整个命名空间 (重要)

using namespace a;

4、单独 使用命名空间中的具体成员:using 命名空间名::成员名;

using a::a;

5、说明一下main中的std

#include 
//使用标准的命名空间std
//std中所有成员名 可以直接使用
//cout endl cin都是命名空间std的成员
using namespace std;
int main(int argc, char *argv[])
{
  
    std::cout << "hello world!" << std::endl;
    cout << "hello world!" << endl;
    return 0;
}
网站地图