C++中的名字空间

1.使用名字空间,对程序中的标识符(类型、函数、变量)按照某种逻辑规则划分成若干组。

2.定义名字空间

namespace 名字空间名{

名字空间成员;

}

3.使用名字空间

  1>作用域限定符:   名字空间名::名字空间成员;

                                    表示访问特定名字空间中的特定成员.

  2>名字空间指令:  using namespace 名字空间名;

                                    表示在该条指令之后的代码对指令所指向名字空间中的所有成员均可见。可直接访问这些成员,无需加作用域限定符"::"。

  3>名字空间声明:  using 名字空间名::名字空间成员

                                    表示将特定的名字空间中的某个成员引入当前作用域,可直接访问这些成员,无需加"::"。

 4.匿名名字空间

    如果一个标识符没有被显式地定义在任何的名字空间中,编译器会将其缺省地置于匿名空间中。

    对匿名名字空间中的成员通过“::名字空间成员”的形式访问。默认可见。

  5.名字空间 合并

     重名的名字空间属于合并关系。

例子:

--------------------------------------------------------------

/*bank.cpp*/

#include <iostream>
using namespace std;
//namespace {
    void print(int money){
        cout<<money<<endl;
    }
//}
namespace abc{
    int balance = 0;
    void save(int money)
    {
        balance += money;
    }
    void draw(int money)
    {
        balance -= money;
    }
    void salary( int money )
    {
        balance += money;
    }
    void print(int money){
        cout<<"农行:;";
        ::print(money);
    }
}
namespace ccb{
    int balance = 0;
    void save(int money)
    {
        balance += money;
    }
    void draw(int money)
    {
        balance -= money;
    }
    void salary(int money){
        balance += money;
    }
}
int main( void )
{
    using namespace abc;
    save(5000);
    cout <<"农行"<< balance << endl;
    draw(3000);
    cout << "农行"<< balance << endl;
    //using namespace ccb;会引发歧义
    save(10000);//实际上存在农行的账户里
    cout << "建行"<< balance << endl;
    draw(3000);//实际上取得是农行的账户
    cout << "建行"<< balance << endl;
    using ccb::salary;//名字空间声明,因为
    salary(6000);
    cout << "建行"<< ccb::balance << endl;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值