zoukankan      html  css  js  c++  java
  • 【C++札记】命名空间(namespace)

    介绍

    命名空间可以解决程序中的同名冲突,尤其大型项目多人开发中经常用到。比如我们使用C++的标准输出std::cout就使用了std命名空间。

    使用作用域符::

    #include <iostream>
    
    using namespace std;
    
    int var = 10;
    
    void foo()
    {
        cout << "this is foo" << endl;
    }
    
    int main()
    {
        int var = 20;
        cout << var << endl;        //输出局部变量
        cout << ::var << endl;      //输出全局变量
    
        foo();      //不加作用域符
        ::foo();    //加作用域符
        return 0;
    }
    

    命名空间会对全局的变量和函数进行作用域打包。

    在某些第三方库中是有namespace的,因此我们在使用这些库的时,要确定是否使用using namespace来解除名字前缀。

    使用语法:

    namespace XXX
    {
            int var = 10;
        
    	class A
    	{
    	    public:
    		    ...
    	};
    }  //没有分号

    使用

    假设有命名空间namespace  Animal;

    namespace Animal 
    {
        int age = 10;
        void action()
        {
            cout << "eatiing" << endl;
        }
    }

     用法一:直接使用命名空间成员  

        cout << Animal::age << endl;
        Animal::action();

    用法二: using使用命名空间成员

        using Animal::age;
        cout << age << endl;

    用法三:使用命名空间全部成员

        using namespace Animal;
        cout << age << endl;
        foo();

    同时命名空间也支持嵌

    #include <stdio.h>
    namespace XXX
    {
    	class A
    	{
    	public:
    		void test()
    		{
    			printf("this is namespace XXX class A
    ");
    		}
    	};
    }
    using namespace XXX;
    
    int main()
    {
    	A* p = new A();
    	p->test();
    	return 1;
    }

    相同的命名空间编译时会合并

    #include <iostream>
    
    using namespace std;
    
    namespace Space {
        int a = 10;
    }
    
    namespace Space {
        int b = 20;
    }
    
    using namespace Space;
    int main()
    {
        cout << "a = " << a << endl;
        cout << "b = " << b << endl;
        return 0;
    }
    

    欢迎加群交流:C/C++开发交流

  • 相关阅读:
    javascript类继承系列一
    Update Statistics用法
    FOR XML PATH
    SQL Server 中WITH (NOLOCK)
    ROW_NUMBER () 与 PARTITION组合拳
    sql脚本的格式
    存储过程
    动态sql
    尽量不要用select into 复制表
    杂谈
  • 原文地址:https://www.cnblogs.com/woniu201/p/11694616.html
Copyright © 2011-2022 走看看