C++自学笔记28(命名空间)

不同商家的相同货品,你要哪个?这可能就是命名空间的解释。

常见的std::string中std就是命名空间。

#include <iostream>
#inclued <string>

void ptintf(int a)
{
    std::cout<<"I like"<<a<<std::endl;
}
void ptintf(int a)
{
    std::cout<<"I don't like"<<a<<std::endl;
}
int main()
{
    printf(4);
    std::cin.get()
}

上面的代码显然无法运行,因为main不知道你想要的是哪个printf函数。可能你会想到类中重载函数,但是在这里我们看到输入参数是一样的,我们无法使用重载。那应该怎么办呢?对其命名。

#include <iostream>
#inclued <string>

namespace like{
    void ptintf(int a)
    {
        std::cout<<"I like"<<a<<std::endl;
    }
}

namespace nlike{
    void ptintf(int a)
    {
        std::cout<<"I don't like"<<a<<std::endl;
    }
}

int main()
{
    like::printf(4);
    std::cin.get();
}

命名空间就是两家不同的店铺,你可先用商家名再拿商品。

还有一件事只有一个命名空间时可不可以省略命名空间?方法是有的using namespace std

这样我们在本文件内从std命名空间的引用就可以省略了。

#include <iostream>
#inclued <string>
using namespace std;

namespace like{
    void ptintf(int a)
    {
        cout<<"I like"<<a<<endl;
    }
}

namespace nlike{
    void ptintf(int a)
    {
        cout<<"I don't like"<<a<<endl;
    }
}

int main()
{
    like::printf(4);
    cin.get();
}

想要省略其他的命名空间只要将std替换名称即可。

不建议使用using namespace       因为你会难以区分c++自带的函数与你自己编写的函数,会为自己以后带来阅读困难。

让我们来看以下的代码

#include <iostream>
#inclued <string>

namespace like{
    void ptintf(int a)
    {
        std::cout<<"I like"<<a<<std::endl;
    }
    void likeBetter(int i)
    {    
        std::cout<<"I like"<<i<<std::endl;
    }
}

namespace nlike{
    void ptintf(int a)
    {
        std::cout<<"I don't like"<<a<<std::endl;
    }
}

int main()
{
    using namespace like
    printf(4);
    likeBetter(8);

    std::cin.get();
}

 在代码中我们使用了like空间下的两个函数喜欢4更喜欢8。如果printf是nlike空间下的呢?两种方式。

int main()
{
    using namespace like

    nlike::printf(4);
    likeBetter(8);

    std::cin.get();
}
int main()
{
    using namespace like
    using nlike::printf;

    printf(4);
    likeBetter(8);

    std::cin.get();
}

第一种是说明用nlike下的printf 只针对这一个。

第二种是针对main函数中所有的printf都使用nlike下。

这就是命名空间以及特点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

少杰是小白

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

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

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

打赏作者

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

抵扣说明:

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

余额充值