浅谈----多文件下C++ 命名空间

命名空间 == 区域声明。为类型、函数、变量提供一个作用域限制。

防止项目多文件集成,出现同名的错误异常。

1、声明和访问

关键字namespace

命名空间声明 在头文件内部

CPP文件实现

/**
 * *****
 * *****   命名空间声明 、头文件内部
 * *****
 * *****
 */
namespace BaiduData
{
    class ObjectManger
    {
    private:
        /* data */
    public:

        void DoSomething();
    };

    //命名空间内,类外
    void Func(ObjectManger);
}

命名空间访问:

/**

* CPP文件内

*/

访问方法1 :直接通过限定符使用,完全限定。

BaiduData::ObjectManger mgr;//声明一个对象

mgr.DoSomething();

BaiduData::Func(mgr);

访问方法2: 通过关键字using 提前引入部分命名空间内容

//意为出现ObjectManger 则替换为BaiduData::ObjectManger

//但是注意,func函数为类外函数,所以无法使用。

using namespace BaiduData::ObjectManger;

ObjectManger mgr;

mgr.DoSomething();

访问方法3: 通过using 将该命名空间所有内容引入

using namespace BaiduData;

ObjectManger mgr;

mgr.DoSomething();
Func(mgr);

//备注: using使用一般在cpp文件顶部,尽量避免放在头文件内部。

2 命名空间实现和声明

两个例子:基本宗旨--》完全限定

//声明

//test BaiduData.h

#pragma once

namespace BaiduData

{

void Foo();

int Bar();

}

//实现方式1 实现的时候前面加完全限定

//test BaiduData.cpp

#include BaiduData.h

using namespace BaiduData;

void BaiduData::Bar(){

//...

}

//实现方式2 这种实现方式是比较适合大项目使用。

#include BaiduData.h

namespace BaiduData{

void Bar(){...}

void Foo(){...}

}

方法2 也适合类的使用,比如

头文件声明

//BaiduData.h

namespace BaiduData {

    class baidudata{
   b     public:
            void Far();
        
        }
  
}
//拓展一个头文件可以增加多个类的声明


namespace BaiduData {

    class baidudata{
        public:
            void Far(); 
        }
     class baidudata2{
        public:
            void Far2();
        }

}

具体实现

#BaiduData.cpp

//正常类的实现外套一个命名空间


namespace BaiduData{

    baidudata::baidudata(){};//构造
    baidudata::~baidudata(){};//析构
    void baidudata:: Far(){... return };//具体方法
    
    baidudata2::baidudata2(){};//构造
    baidudata2::~baidudata(){};//析构
    void baidudata2:: Far2(){... reutrn };//具体方法
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值