iostream & namespace

    8年前读大一的时候上过《C++基础》,才了解到当时所学的C++距今已发生了很多变化。

    1. namespace

        namespace,命名空间,是一种将程序库名称封装起来的办法。怎么理解呢?就是我要定义相同的类、函数时,可能会出现类名、函数名相同的情况,但是我不想因此造成重写@override,怎么办?我们采用namespace定义类和函数的作用范围。

namespace firstplace{

     public:

           class A{ ... };

}

namespace secondplace{

     public:

          class A{ ... }; 

}

       这有点像java中的package用法,但是java规定了public class A只能有一个。而C++来说,我用不同的命名空间,虽然使用的类名字相同A,也都是public,但却是不同的类。

# include <iostream>

namespace firstplace{

      int main(){

           A* a = new A();                //firstplace中的class A

           ... ...

           delete a;

      }

}

... ...

namespace secondplace{

   int main(){

        A *a2 =new A();               //secondplace中的class A

        ... ...

        delete a2;

    }

}

      如上的例子,如果不使用namespace那将变成如下,用::声明调用区域。

# include <iostream>

int main(){

       firstplace :: A* a = new firstplace::A();                        //firstplace中的class A

       secondplace ::  A *a2 =new secondplace::A();               //secondplace中的class A

       ... ...

       delete a;

       delete a2;

}

  2. iostream

        iostream是C++的标准输入/输出库,可以理解为java语言中的import java.util.*一样。不同的是java需要import的包特别多:例如java.lang.*; java.collection....。iostream对于C++来说,囊括了很多功能函数。

# include <iostream>

# include <iostream.h>

        需要注意的是,早前C++和C共用点很多,例如“# include <iostream.h>”其实导入的是C库,使用的是全局命名空间。全局的意思就是只要导入该库,库函数就可以被任意地call,但是不可修改或定义和库函数同名的函数。

      #include <iostream>导入的是STL库,没有后缀,和#include <iostream.h>是两个不同的文件。而且#include <iostream>不是全局命名空间,则需要声明命名空间, 如"firstplace :: A",或者一劳永逸,“using namespace firstplace”。这样我可以正常使用iostream里面库函数,例如cout, cin。

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值