C++命名空间

一. 命名空间也称名字空间,即namespace
            1.名字空间是一种描述逻辑分组的机制,如果一些声明按照某种准则在逻辑上属于同一集团,就可以将它们放入同一个名字空间,以表明这个事实。
            2.防止命名冲突也是一个很重要的原因。一个人写的程序放到一个名字空间中也是一种可取的做法。

二.使用某个名字空间下的对象或函数:
           1. namespace-name::member-name

           2.  ::为域运算符,在此表明一种限定,一个范围


三.一个名字空间的成员必须采用如下的记法形式引入:

namespace namespace-name{

//声明和定义

}

•我们不能在名字空间定义之外用加限定的语法形式为名字空间引入新成员
•新成员的声明和定义是可以分开的
•声明和定义分开后,编译器可以帮助捕捉到例如拼写或类型不匹配一类的错误。
•一个名字空间也是一个作用域,一个程序越大,通过名字空间去描述其中逻辑上独立的各个部分也就越重要。
理想情况是,程序里的每个实体都属于某个可以识别的逻辑单位(模块),所以,一个非凡的程序里的每个声明都应该位于某个名字空间里,以此指明它在程序中所扮演的角色


四.使用命名空间

•带限定词的名字。如果使用另外一个名字空间中的成员,需要加限定词,如:std::in
•使用声明:using std::in
•使用指令:using namespace std;
•无名名字空间
–无名名字空间中的成员可以直接使用::访问




#include <iostream>

//命名空间
namespace hero {
    const char* name = "英雄";
    void show(){
        std::cout << "英雄出现" << std::endl;
    }
}

namespace enemy {
    const char* name = "敌人";
    void show(){
        std::cout << "敌人出现" << std::endl;
    }
}

//全局
const char* name = "NPC";

int main(){
    
    std::cout << hero::name << std::endl;
    std::cout << enemy::name <<std::endl;
    std::cout << name <<std::endl;
    
    //使用声明
    /*
    using std::cout;
    using std::endl;
    using std::string;
    
    cout << "123456789" << std::endl;
    //std::string str = "9765432";
    string str = "asdfghjk";
    cout << "str = " << str << endl;
    */
    
    
    //使用指令
    /*
    using namespace std;
    cout << "使用指令12345" << endl;
    string str1 = "使用指令de字符串";
    */
    
    using namespace std;
    using namespace hero;
    using namespace enemy;
    
    cout << hero::name << endl;
    hero::show();
    enemy::show();
    
    
    
    C++所有内容都在命名空间下,只不过我们自己没有写命名空间,C++会把这些内容放到一个没有名字的命名空间中
    cout << ::name << endl;
    return 0;
}





  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值