c++第二天(命名空间)

22 篇文章 2 订阅

c++的输入输出流在std空间内,因此为了节省代码量,直接在开头加上using namespace std;

一、为了防止对象发生冲突,需要使用空间名来限制对象的范围

//定义

namespace GKD

{

        //该空间可以放置对象(变量,函数)

        int data;

        func_demo();

}

!!!使用using 可以把空间暴露出来,使整个文档都可见,using namespace GKD;或让某个对象暴露:using GKD::data;可能会导致对象名冲突

//引用空间的对象(注意:命名空间的函数要在内部声明和使用,如果在空间外它会找不到函数)

#include<iostream>
using namespace std;

namespace GKD
{
    
        int data=100;
        void func_demo()
        {
            cout << "111" << endl;
            
        }
   
}


int main()
{
    cout << GKD::data << endl;
    GKD::func_demo();
    
}
输出:
100
111

二、空间的嵌套

#include<iostream>
using namespace std;

namespace GKD
{
    namespace gg
    {
        int data=100;
        void func_demo()
        {
            cout << "111" << endl;
            
        }
    }
   
}


int main()
{
    cout << GKD::gg::data << endl;
    GKD::gg::func_demo();
    
}

就是在空间里面再套个空间,引用的时候多加个就行。

三、匿名空间

关于匿名空间的对象怎么引用,直接使用就好,因为没有空间名。

#include <iostream>
using namespace std;
namespace
{
    int data;
}


//匿名空间的变量直接引用!
int main()
{
    data = 10;
    cout << data << endl;
}

四、命名空间的跨文件使用

由于命名空间(包括匿名空间)的对象只能在本文件有效,要在其他文件中使用->就要加外部链接关键字extern。哪个文件要使用该对象,就在哪个文件的对象前面加extern。注意!两个文件中的命名空间空间名必须一致,只是使用的那个不需要赋值,而是从另一个文件获得初始值。作用:数据交互。缺点:需要写重复的定义和对象。

------demo4.cpp--------
#include<iostream>
using namespace std;
namespace XD
{
    extern int c ;
    extern int d ;
}

void func_XD()
{
    cout <<"c:"<< XD::c <<"  d:"<< XD::d << endl;
}
-----------demo3.cpp-------------
#include<iostream>
using namespace std;

extern void func_XD();

namespace XD
{
    int c =100;
    int d =200;
}

int main()
{
    func_XD();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值