zoukankan      html  css  js  c++  java
  • 第十一节,命名空间namespace

    1,命名空间的定义

    命名空间可以把不同的方法分散到不同的文件去实现,如果你会objective-C,他的作用和里面的类目有异曲同工之妙。当然了也有很多不同的地方,首先要明白的是,命名空间并不是一个类,你扩展他的方法并不是和类目一样在扩展一个类的方法。

    如果你学过NET开发,获取你会对这个命名空间有更好的理解。

    2,命名空间的写法

    namespace test
    {
        int value;
        void printfStr();
    }
    
    void test::printfStr()
    {
        std::cout<<"teststes";
    }


    我的习惯是一般会直接在命名空间里面定义函数或者类的成员方法,然后再命名空间的外部去实现这些方法或者函数。这样会使命名空间看着更加的整洁。

    namespace是定义命名空间的关键字  test是命名空间的名称。

    3,命名空间的使用

    int main(int argc, const char * argv[])
    {
        
        int value = 0;
        using test::value;
    }

    如果命名空间是在别的文件中引用还需要在此文件中导入一句话

    using namespace test;


    这句话的作用,就是引用此命名空间。

    当然了,细心的哥们可能会意识到上面的这段代码有一些错误,就是

    int value = 0;

    using test::value;

    这两句会出现错误。

    首先我们要明白,在命名空间中定义的变量具有全局性,如果你在该文件中使用了此命名空间,那么此文件中得变量名不能与此命名空间有冲突的地方,如果两个变量名称相同的话会出现报错的情况。


    4,命名空间的别名

     namespace TT = test;
     TT::printfStr();


    上述是为一个命名空间取别名的方法。

    5,未命名空间

    namespace
    {
        int value;
        int value1;
    }


    未命名空间有一定的局限性,只能在本文件中使用。

    每一个文件中只能有一个未命名空间

    说了这么多,我感觉未命名空间有点和static类似.


  • 相关阅读:
    关于在php+apache开发过程中使用svn进行版本的维护
    Fragment的切换动画实现
    IOS MJExtension json转模型的轻量级框架的使用
    Centos 配置Red5流媒体服务器
    在Centos 6.5 上面配置 SVN
    在Centos 上面配置Openfire
    关于阿里云上面的Centos上面配置 防火墙
    【Android 一些难以理解的控件、容易混淆的、多种实现方式的、一些该纠正的想法】
    【进攻移动开发_htm5_跨平台_的号角】
    【进攻Android的号角】
  • 原文地址:https://www.cnblogs.com/james1207/p/3253744.html
Copyright © 2011-2022 走看看