zoukankan      html  css  js  c++  java
  • 命名空间

    使用命名空间

    在引用命名空间成员时,要用命名空间名和作用域分辨符对命名空间成员进行限定,以区别不同的命名空间中的同名标识符。即:
    命名空间名::命名空间成员名

    c++提供了一些机制,能简化使用命名空间的使用:

    1. 使用命名空间别名
    可以为命名空间起一个别名,用来替代较长的命名空间名,如:
    namespace PeopleA
    可以用一个较短的别名替代它。如:
    namespace PA = PeopleA
    
    1. 使用using命名空间成员名
    using后面的命名空间成员名必须是由命名空间限定的名字,如:
    using AA::i;
    
    1. 使用using namespace命名空间名
    如:using namespace AA;
    声明了在本作用域中要用到命名空间AA中的成员,在使用该命名空间的任何成员时都不必再使用命名空间限定。
    
    1. c++中可以声明无名的命名空间,如:
    namespace 
    {
        void fun()
        {
            //....
        }
    }
    

    由于命名空间没有名字,在其他文件中显然无法引用,它只在本文件的作用域有效。若无名命名空间的成员fun函数的作用域为文件A,在文件A中使用无名命名空间的成员,不用也无法用命名空间名限定。

    using declarations和using directives的区别

    1. using declarations
      示例:
    #include <iostream>
    int main()
    {
        using std::cout;
        using std::endl;
        cout << "Hello World!" <<endl;
        return 0;
    }
    

    using std::cout就是using declarations。

    using declarations方式:这种方式每次只引入一个命名空间成员,形式是 using namespace_name::member_name
    使用using declarations方式的name的作用域:它服从一般的作用域法则。name,从using declarations开始一直到当前作用域结束,都是可见的。

    1. using directives

    using derective的形式是using namespace namespace_name;
    示例:

    using namespace std;
    

    要点:using directive可以出现命名空间,函数和块中,但不能出现在类中。

    参考
    https://blog.csdn.net/cherishinging/article/details/73810785

  • 相关阅读:
    程序猿也爱学英语(上),有图有真相
    时间&物质&效率
    20130722
    Java数组操作工具
    小学课文《挑山工》
    字符编解码的故事(ASCII,ANSI,Unicode,Utf-8区别)
    String[]转化暴露“思维误区”
    2017.9.17 小测试小整理
    Noip2016 提高组 Day1
    luogu P2585 [ZJOI2006]三色二叉树
  • 原文地址:https://www.cnblogs.com/hunter-w/p/13263284.html
Copyright © 2011-2022 走看看