分享
 
 
 

名空间

王朝百科·作者佚名  2010-03-14
窄屏简体版  字體: |||超大  

一般情况下,如果c++中出现两个变量、函数名、类名完全相同时,就会产生冲突。解决命名冲突的办法传统的做法是重新使用不同的标识符。但又是这样做有时反而降低程序的可读性,因此c++提供了第二种解决命名冲突的方法——名空间。将这些名字相同的变量、函数和类定义在不同的名空间中,问题就解决了。需要注意的是,同一个名空间中标识符须是唯一的。

名空间定义用c++的关键字namespace引导,定义格式:

namespace 名空间标识符名

{

成员的声明

}

名空间成员的访问:

使用名空间成员时需用名空间名进行标识,从而解决了标识符的冲突。名空间成员访问方式如下

名空间标识符名::成员名

名空间的应用

可以指定名空间是C++的新特性,在使用STL类库时经常用到这么一句:using namespace std;

该语句的含义是使用名空间std。使用名空间可以帮助开发程序人员在开发新的软件组件时不会和已有软件组件产生标识符命名冲突。

C++中,头文件可以可以使旧版本的*.h,也可以

不带.h扩展名的头文件。编译预处理指令可以采用任何一种形式的头文件方式,但两种头文件不能混合使用。在应用名空间时,使用编译预处理命令包含相关头文件时,应省略头文件后缀.h,例如使用iostream.h的方法如下:

#include<iostream>

应用举例:

例一:

#include<iostream>

#include<string>

using namespace std;//指示在本程序中可以使用c++标准类库中定义的名字,std是标准名空间名,在标准头文件中声明的函数、对象和类模板,都在名字空间std中声明

namespace A//用关键字定义名字空间A

{

string user_name="namespace A";

int fun()

{

int n=18;

return n;

}

void Display()

{

cout<<"In namespace A……"<<endl;

}

}

namespace B

{

string user_name="namespace B";

int fun()

{

int n=28;

return n;

}

void Display()

{

cout<<"In namespace B……"<<endl;

}

}

int main(void)

{

cout<<A::user_name<<endl;

cout<<"n="<<A::fun()<<endl;

A::Display();

cout<<endl;

cout<<B::user_name<<endl;

cout<<"n="<<B::fun()<<endl;

B::Display();

cout<<endl;

return 0;

}

例二:

#include<iostream>

using namespace std;

int main(void)

{

std::cout<<"This is a C++ program!"<<endl;

return 0;

}

C++中为什么增加“名空间”和“作用域”?

C语言中规定每个变量都有其有效地作用域,只能在变量的作用域内使用该变量,不能使用其他作用域中的变量。例如:

float a=13.5;

void main()

{

int a=5;

cout<<a;

}

程序中有两个a变量:一个是全局变量a,实型;另一个是main函数中的整型变量a,它是在main函数中有效的局部变量。根据规定在main函数中局部变量讲屏蔽同名的全局变量。因此上述的输出是局部变量a的值5,而不是全局实型变量a的值13.5.如果想输出全局实型变量的值,有什么办法呢?c++提供了作用域运算符::,它能指定所需要的作用域。

float a=13.5;

void main()

{

int a=5;

cout<<a<<endl;

cout<<::a<<endl;

}

::a表示全局变量a。请注意:不能用::访问函数中的局部变量。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有