名称空间namespace

本文介绍了C++中的名称空间概念,强调其在解决命名冲突中的作用。通过示例展示了如何创建和使用名称空间,特别讨论了标准库std的使用,包括std::cout和std::endl等。还解释了std代码的组织方式,以及using关键字的用途,帮助读者更好地理解和应用C++的名称空间机制。
部署运行你感兴趣的模型镜像

C++自学精简教程 目录(必读)

名称空间的作用

名称空间主要用来防止名称重名。

比如几十上百万的代码里,肯定很多模块都有类似name copy sort这样的变量名或者函数名。

如何区分他们呢?

建立名称空间以隔离可能产生的同名问题

//定义一个名称空间F,并在里面添加两个函数start stop
namespace F {
    void start(){}
    void stop(){}
}
namespace G {
    void start(){}
    void stop(){}
}
//我们也可以在std名称空间中添加类,虽然一般不这么做,这里仅仅用于帮助我们理解什么是名称空间
namespace std {
    struct Student{};
}
int main()
{
    F::start();//通过名称空间名称F访问该名称空间中的函数start,下同
    F::stop();

    G::start();
    G::stop();

    std::Student my;

    using namespace F;//将名称空间F中的名称暴露出来,不需要使用F::也可以访问
    start();//再次执行名称空间F中的start函数

    return 0;
}

名称空间 std

std 表示 C ++ 标准模板库(standard template library)

为了防止和我们自己写的代码变量名,或者类型名重名,C++ 把标准库的内容都放到了这个名称空间中了。比如,cout , cin,endl

std代码的组织方式

以标准库std::string std::cin std::cout 为例,来说明名称空间和文件包含之间的关系

#include<string> 中的string实际上是一个文件的名字

string 文件 内容大致如下

namespace std {
    template<T> class string{
    };
}

cout 所在的 iostring 文件 内容大致如下

namespace std {
    extern ostream cout;
}

可以看出 一个名称空间 std 可以跨越很多个代码文件,把它想包含的类,对象都包含进来。

using

每次使用名称空间的对象都加上名称空间的名字,比如std::cout,的确也麻烦。

比如,如果不使用 using namespace std; 的话,Hello World 的 代码像下面这样:

#include<iostream>

int main(void)
{
    std::cout<<"Hello World!"<<std::endl;
    return 0;
}

这时候可以使用using namespace std;来直接使用cout对象:

#include<iostream>
using namespace std;

int main(void)
{
    cout<<"Hello World!"<<endl;
    return 0;
}

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C++程序员Carea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值