• C++使用命名空间中成员的三种方式


    通过简单的代码来介绍使用命名空间中成员的三种方式(我们最常用到的命名空间是是标准库std,下面的命名空间都以std为例):

    • 使用作用域符::
     1 #include<iostream>
     2 int main()
     3 {
     4 ////////求两个数的和
     5 std::cout<<"Enter two numbers:"<<std::endl;
     6 int v1,v2;
     7 std::cin>>v1>>v2;
     8 std::cout<<"The sum of "<<v1<<" and "<<v2<<" is "<<v1+v2<<std::endl;
     9 return 0;
    10 }

    前缀std::指出名字cout和cin是定义在名为std的命名空间中的。使用这种方式有一个缺点:当使用标准库中的一个名字时,必须显式地说明我们想使用来自命名空间std中 的名字。例如,需要写出std::cout,通过使用作用域运算符::来指出我们想使用定义在命名空间std中的名字cout。此方法显得比较繁琐。

    • using声明

    using声明的形式:

              using namespace_name::member_name;

    其中,using是关键字,namespace_name是你将要使用的命名空间的名字,比如标准库std,member_name是你要使用的命名空间里的成员,比如cin、cout、endl等。

     1 #include<iostream>
     2 ////using 声明,当我们使用名字cin时,从命名空间std中获取它
     3 using std::cin;
     4 int main()
     5 {
     6 int i;
     7 cin>>i;  /////正确,cin和std::cin含义相同
     8 cout<<i;  /////错误,没有对应的using声明,必须使用完整的名字std::cout
     9 std::cout<<i;  ///正确,显式地从std中使用cout
    10 return 011 }

    注意:每个using声明引入命名空间中的一个成员,因此每个名字都需要独立的using声明
    下面利用using声明重写第一个代码:

     1 #include<iostream>
     2 /////通过下列using声明,我们可以使用标准库中的名字
     3 using std::cin;
     4 using std::cout; using std::endl;
     5 int main()
     6 {
     7 cout<<"Enter two numbers:"<<endl;
     8 int v1,v2;
     9 cin>>v1>>v2;
    10 cout<<"The sum of "<<v1<<"and"<<v2<<"is"<<v1+v2<<endl;
    11 return 0;
    12 }

    有了using声明,无须专门的前缀(形如std::)也能使用所需的名字。在上述程序中,一开始就对cin、cout和endl进行using声明,这意味着我们不用再添加std::形式的前缀就能直接使用它们。

    • using 指示

    using指示的形式:

                using namespace NAME;

    其中,using和namespace都是关键字,NAME是命名空间的名字,如std。如果这里所用的名字不是一个已经定义好的命名空间的名字,则程序将发生错误。

     1 #include<iostream>
     2 using namespace std;
     3 int main()
     4 {
     5 cout<<"Enter two numbers:"<<endl;
     6 int v1,v2;
     7 cin>>v1>>v2;
     8 cout<<"The sum of "<<v1<<"and "<<v2<<"is "<<v1+v2<<endl;
     9 return 0;
    10 }

        一条using声明语句一次只引入命名空间中的一个成员,而using指示使得某个特定的命名空间中的所有的成员都是可见的。
    补充:如果命名空间名比较长,就会显得很繁琐,使用命名空间的别名为其设定一个较简单的同义词(或别名)。定义形式:

            namespace primer = cplusplus_primer;

    其中,namespace是关键字,primer是别名,cplusplus_primer是原来的名字。一个命名空间可以有多个同义词或别名,所有别名都与命名空间原来的名字等价。

  • 相关阅读:
    各进制字符串转换
    小度智能音箱开发
    讯飞魔飞智能麦克风-->直接输出串口
    node express SSL 证书布署
    紫外线消毒灯智能控制系统
    智能家居解决方案
    Git 分支管理
    C语言MQTT库MQTTPacket.c使用,尤其接收
    Vue 数组控制CSS
    AOP_02 通过ContextBoundObject、ContextAttribute 上下文对象实现
  • 原文地址:https://www.cnblogs.com/cynthia-dcg/p/6022122.html
Copyright © 2020-2023  润新知