免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2309 | 回复: 8
打印 上一主题 下一主题

[C++] 问个c++的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-10 09:56 |只看该作者 |倒序浏览
有人说使用using namespace std;后,编译会包含额外的信息;导致程序运行速度慢,所以一般写成std::cout这种形式,这句话对否?我觉得后面导致程序运行速度慢这句不见得吧? 良好的习惯是什么?

说道习惯,我一般喜欢在头文件中申明namespace
namespace AC{ var1; ... varn;class {}; ... class {};}

这样做是比较良好的习惯吧,但是有人就不写namespace了,说会影响性能。

高人指教一下。

论坛徽章:
0
2 [报告]
发表于 2008-09-10 10:09 |只看该作者
原帖由 cnangel 于 2008-9-10 09:56 发表
有人说使用using namespace std;后,编译会包含额外的信息;导致程序运行速度慢,所以一般写成std::cout这种形式,这句话对否?我觉得后面导致程序运行速度慢这句不见得吧? 良好的习惯是什么?

说道习惯,我 ...


编译变慢还差不多

论坛徽章:
0
3 [报告]
发表于 2008-09-10 10:10 |只看该作者
我怎么觉得这个只会影响编译时的效率?

论坛徽章:
0
4 [报告]
发表于 2008-09-10 11:45 |只看该作者
所以我感觉很奇怪,每次把std加在每个cout以及cerr等,甚至 连string不包含,都这么写, string::str = "aaa";

论坛徽章:
0
5 [报告]
发表于 2008-09-10 12:19 |只看该作者
原帖由 cnangel 于 2008-9-9 19:45 发表
所以我感觉很奇怪,每次把std加在每个cout以及cerr等,甚至 连string不包含,都这么写, string::str = "aaa";


用std::cout或者std::string是为了避免用using namespace后的名字污染。
我觉得好的习惯是 .h 文件尽量不要用using,.cc/.cpp里面这个要求可以适当放宽一点(比如只允许using namespace std)。

论坛徽章:
0
6 [报告]
发表于 2008-09-10 12:29 |只看该作者
原帖由 emacsnw 于 2008-9-10 12:19 发表


用std::cout或者std::string是为了避免用using namespace后的名字污染。
我觉得好的习惯是 .h 文件尽量不要用using,.cc/.cpp里面这个要求可以适当放宽一点(比如只允许using namespace std)。

所说的污染不存在吧?因为在不同的namespace空间上。

论坛徽章:
0
7 [报告]
发表于 2008-09-10 12:34 |只看该作者
原帖由 cnangel 于 2008-9-9 20:29 发表

所说的污染不存在吧?因为在不同的namespace空间上。


什么意思?用 using namespace foo 不就是把整个 foo 里面的名字搞到当前的编译单元了吗。要是 foo 里面有名字和你当前的名字空间里面的名字重名不就撞车了?

论坛徽章:
0
8 [报告]
发表于 2008-09-10 14:50 |只看该作者
原帖由 emacsnw 于 2008-9-10 12:34 发表


什么意思?用 using namespace foo 不就是把整个 foo 里面的名字搞到当前的编译单元了吗。要是 foo 里面有名字和你当前的名字空间里面的名字重名不就撞车了?

这个撞车在编译时候就能够被识别(除非逻辑错误),使用了using namespace foo,那么对于不同命名空间的表示就是为了区分开foo::bar和其他空间的bar这个对象(例如:std::bar),这样就不会有撞车现象。

那么到底那种习惯好呢?

论坛徽章:
0
9 [报告]
发表于 2008-09-15 00:14 |只看该作者
emacsnw  的这种习惯真好,学习了.

原帖由 emacsnw 于 2008-9-10 12:19 发表


用std::cout或者std::string是为了避免用using namespace后的名字污染。
我觉得好的习惯是 .h 文件尽量不要用using,.cc/.cpp里面这个要求可以适当放宽一点(比如只允许using namespace std)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP