• c++ namespace的使用


    ** namespace:命名空间就是为解决C++中的变量、函数的命名冲突而服务的。

    ** namespace定义的格式基本格式是:

      namespace identifier
      {
          entities;
      }

      举个例子,
      namespace exp
      {
          int a,b;
      }

      为了在namespace外使用namespace内的变量,使用::操作符,如下

      exp::a
      exp::b

      使用namespace可以有效地避免重定义,

     1 #include <iostream>
     2 using namespace std;
     3 
     4 namespace first
     5 {
     6   int var = 5;
     7 }
     8 
     9 namespace second
    10 {
    11   double var = 3.1416;
    12 }
    13 
    14 int main () {
    15   cout << first::var << endl;
    16   cout << second::var << endl;
    17   return 0;
    18 }

      结果是:
      5
      3.1416

      两个全局变量都是名字都是var,但是他们不在同一个namespace中所以没有冲突。

    ** using 关键字

      关键字using可以帮助从namespace中引入名字到当前的声明区域,

     1 #include <iostream>
     2 using namespace std;
     3 
     4 namespace first
     5 {
     6   int x = 5;
     7   int y = 10;
     8 }
     9 
    10 namespace second
    11 {
    12   double x = 3.1416;
    13   double y = 2.7183;
    14 }
    15 
    16 int main () {
    17   using first::x;
    18   using second::y;
    19   cout << x << endl;
    20   cout << y << endl;
    21   cout << first::y << endl;
    22   cout << second::x << endl;
    23   return 0;
    24 }
    25 输出是
    26 5
    27 2.7183
    28 10
    29 3.1416
    30 就如我们所指定的第一个x是first::x,y是second.y

      using也可以导入整个的namespace,

     1 #include <iostream>
     2 using namespace std;
     3 
     4 namespace first
     5 {
     6   int x = 5;
     7   int y = 10;
     8 }
     9 
    10 namespace second
    11 {
    12   double x = 3.1416;
    13   double y = 2.7183;
    14 }
    15 
    16 int main () {
    17   using namespace first;
    18   cout << x << endl;
    19   cout << y << endl;
    20   cout << second::x << endl;
    21   cout << second::y << endl;
    22   return 0;
    23 }
    24 输出是
    25 5
    26 10
    27 3.1416
    28 2.7183

    ** namespace也支持嵌套

     1 #include <iostream>
     2 
     3 namespace first
     4 {
     5     int a=10;
     6     int b=20;
     7 
     8     namespace second
     9     {  
    10         double a=1.02;
    11         double b=5.002;
    12         void hello();
    13     }  
    14 
    15     void second::hello()
    16     {  
    17     std::cout <<"hello world"<<std::endl;
    18     }
    19 }
    20 
    21 int main()
    22 {
    23     using namespace first;
    24 
    25     std::cout<<second::a<<std::endl;
    26     second::hello();
    27 }
    28 输出是
    29 1.02
    30 hello world

    在namespace first中嵌套了namespace second,seond并不能直接使用,需要first来间接的使用。

    ** namespace 可以取别名

      在对一些名字比较长的namespace使用别名的话,是一件很惬意的事。但是与using相同,最好避免在头文件使用namespace的别名(f比first更容易产生冲突)。
    namespace f = first;

  • 相关阅读:
    读邮件正文
    收邮件
    算法 字符串转换为以为数组
    获取下拉框的值
    thinphp 模版标签中 除了volist 和 if 其余的标签中的变量不需要$符号
    php 时间戳处理 自定义时间戳
    jquery 根据json 生成数据 根据生成的数据选择对应的
    php qrcode 二维码 扫描后多行在软件中输出问题
    数组转换为字符串
    浏览器的同源策略
  • 原文地址:https://www.cnblogs.com/chencesc/p/4287368.html
Copyright © 2020-2023  润新知