王朝网络
分享
 
 
 

《c++ primer》读书笔记10

王朝c/c++·作者佚名  2006-01-30
宽屏版  字体: |||超大  

笔记范围:2.7节

对于大多数人而言,学习编程的第一步就是模仿,说的直接点就是从教材上抄几段代码(比如那个知名的hello world)到机器上,然后慢慢的习惯,不错,这是一个学习语言的好方法。但是这里有个问题,人们对于已经成为习惯的东西往往不会给以思考,导致很长时间以后对于自己几乎每天都在写的句子却不知道它的具体涵义,举个例子:只要你用的是c++,那么相信你每次都少不了写这样的句子:“using namespace std;“,很多第一次见到c++源程序的初学者多数会问:what is it?而真正学了一段时间的人对于这个问题却没感觉了,然而真正该思考这个问题的却是后者,这不能不说是这个学习方法的一个大弊端,这也是我一直坚持先搞清基本概念再动手的原因。

正如我在上篇笔记中所说的:为了合作的需要使得编程成为了这个世界上最不具备个性化的行为之一,因此程序员在命名组件的时候选择的名字往往都差不多。而全局名字又不可避免,那么名字污染的概率也就非常大,理解了这些,相信对于namespac的概念的理解应该不是问题了,无非是改变了名字的可视性,当然,这不是我们最关心的,我们更想知道的是如何用好它。这样就要解决下面两个个问题。

第一:如何定义?书上给出一个比较明确的回答,形如这样:

namespace owl {

int x;

char y;

class obj { ….. };

void max( const int* );

}

但是这样的回答,我们并不是很满意,比如,我们都知道,为了减少编译时间和避免重复函数定义。往往把函数的声明放在头文件中(abc.h),而把实现放在相应的源文件中(abc.cpp)。那么名字空间该如何定义呢?难道一个”{“在abc.h,一个“}“在abc,.cpp中吗?如果真的能这样,多个头文件又该如何呢?显然这是不可能的,这个我们可以到8.5节中得到解释。现在我们只要提出这样的问题,并把它留在脑子里,不要让这个概念成为麻木的习惯,

第二:怎么用它?本节给出了三种用法,下面我们通过那个hello world 程序,作一个简单的比较。

1. using提示符:

#include <iostream>

#include <cstdib>

using namespace std;

int main()

{

cout << "hello world!" << endl;

system( "pause" );

return 0;

}

呵呵。很舒服?是吧?是的。大多数人是这个用法,但是正如书上所说,这个做法让名字空间形同虚设,我就遇到过这样的事情。有一次我写main()所在文件的时候忘了写using提示符,编译器居然给我通过了。当时真的吓了一跳的。后来才发现我include的文件已经写了。可见这个写法的弊端,万一我在不想用此名字空间的时候include了该文件,后果是有点麻烦的,当然对于std来说,这样的忧虑有些多余了,因为没人会去和ISO抢名字(恩,某些特殊人士除外)

2. 名字空间修饰符

#include <iostream>

#include <cstdlib>

int main()

{

std::cout << "hello world!" << std::endl;

system( "pause" );

return 0;

}

这个写法好是好。就是太烦,每次都得写std ,程序越长写的越多,老板又不加工资,咱不干。(什么?设别名?namespac A = std; ? 你干吧。咱还是不干)

3. using声明。

#include <iostream>

#include <cstdlib>

using std::cout;

using std::endl;

int main()

{

cout << "hello world!" << endl;

system("pause");

return 0;

}

恩。只声明要用的,这样不错。尽管多写了些,程序越长写的越值,呵呵。等等,这样的话。如果声明在头文件中,岂不是又回到第一个问题上去了,可以再改下,

#include <iostream>

#include <cstdlib>

int main()

{

using std::cout;

using std::endl;

cout << "hello world!" << endl;

system("pause");

return 0;

}

啊哈,妙极了,using 可以进一步改变名字的域,这个时候你肯定会问,using提示符可以这样用吗? 如果能,岂不更省事?很遗憾,不能的,你在8.5节中会找到答案,

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝网络 版权所有