关闭

using namespace std

标签: iostreamc++classincludeobjectio
1218人阅读 评论(0) 收藏 举报

名词空间namespace

1) namespace只能在全局范畴定义,但它们之间可以互相嵌套。

2) 在namespace定义的结尾,右大括号的后面不必要跟一个分号。

3) 一个namespace可以在多个头文件中用一个标识符来定义,就好象重复定义一个类一样。

4)一个namespace的名字可以用另一个名字来作它的别名,这样我们就不必敲打那些开发商提供的冗长的名字了。比如说namespace alex = ThisIsAelxLongNamespace;

5) 我们不能像类那样去创建一个名字空间的实例

1.每个编译单元可以有一个没有命名的名词空间。

//cu.cpp

namespace{

class object{}...

}

   2. 友元:可以在一个名字空间的类定义之内插入一个friend 声明,这个友元也属这个namespace

使用名词空间namespace

1.alex::Student::age=5;//象使用类一样使用namespace

2.使用using指令using namespace std;using namespace alex;using namespace chirs;

如果alex 和chirs都有一个love 函数的话,就会发生冲突,

3.使用using声明:

void func(){

using namespace alex;//using指令

using chris::love;//uisng声明

love();//chirs::love();

alex::love();//必须这么使用

}

 

使用名称空间标识符std。
这样在原来使用名称空间的头文件里就可以直接使用里面定义的全局变量。
此处所谓的全局就是只在本名称空间里有效。
比如你使用c++标准流库的时候,往往需要这样包含头文件:
1.#include
或者:
2.#include
方式1使用了名称空间机制,而后者没有。
所以前者定义的io对象cin&cout就不可以直接使用,而必须使用std::cin和std::cout.要是在文件开始用了using namespace std;则可以直接使用cin&cout.
方式2就不需要这些措施。这也是我们平时就采用的方法。


名字空间指标志府的可见范围。

自己定义名字空间

namespace A

{

class B{}

}

这样你的类只在这个名字空间里可见,如果别的地方想要使用你这里定义的B的话,必须加上

int main()
{
using namespace A;
B b;
}

或者加名字空间限定府 A::B b;这样就定义了一个B类型的对象。

c++标准库中所有的标志府都被定义在一个名字空间std中,iostream也是标准库中的头文件,你查看一下include目录,会发现又两个头文件iostream.h和iostream,其中iostream.h是c++以前的库,iostream是在名字空间std中的库,所以当你包含头文件并想使用头文件中的标志符的时候有两种方法。

#include <iostream.h>

或者

#include <iostream>

using namespace std;

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3430次
    • 积分:51
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条
    文章存档
    阅读排行