被误解的C++

 
我不是要否定C,更不是要挑起口水,只是要纠正不断被讹传的对C++认识的误区。
1.C++不是C的超集
C++沿袭了C很多的优良传统,但不仅仅是Object in C。从设计泛型开始就和C走不通道路,BJ一直强调C++是一门新的语言。C++与C只能说比较亲。
2.C++不是OOP语言
C++是一个多泛型语言,可以选择OO,PO(process   oriented),GP,(generic   programming), ADT(Abstact data type)等,也可以混用
3.认清VC++,MFC和C++的关系
很多盲人认为VC++就是C++,在此声明VC++是C++的一个编译器,编译器是实现语言的一种程序,语言的实现和语言的本身是有差别的,何况VC++一直不怎么样,充其量是C++的一个方言版本,而且是极其令人恶心的方言。
至于MFC,它只是M$的一个框架库,如果你能在ISOC++里面找到说MFC是C++的一部分的话~MFC孰优孰劣无从谈及,但至少从编码角度,其完全和ISOC++背道相驰,从语言规范角度完全是劣品。
4.关于STL和标准库
STL库的编码市场被某些黑心编译器商修改以适合本编译器的一些非标准构造,于是使用该编译器的用户市场辱骂STL以及类似颇受争议的标准库成员(如auto_ptr)
5.关于效率
就效率本身而言,讨论某语言比另一个快完全是无聊的。脱离环境的讨论完全没有意义。如果真要玩效率,算上模板元,某些情况下C++的程序不必C慢,甚至更快,而且效率流失本身大多在于程序员本身的劣化以及平台相关级别的优化器的不足。关心效率应该从避免不必要的效率流失,促进编译器优化以及加强编译器与平台级别的优化上,而不是高级语言表达思维上。
6.关于那些张嘴闭嘴C比C++好之辈
我认为,熟悉编程语言之辈不会随口说谁好谁不好,工具而已,5条所述者大多都是用C++写些非标准写法的程序,或者是没用过C++。我从来不信此类人真正熟悉C++,甚至不熟悉C,甚至不熟悉编程,他们只想着用任何办法写一个貌似能走起来的东西。
7.C++从来不是完美的
没人说过任何一样东西是完美的,以偏见+极度完美化的要求审视C++是错误的。
从来没人否认C++的臃肿,复杂,某些东西不优雅,某些东西不支持,某些东西不直观。
BJ也很喜欢《Imperfect C++》一书,而且从来不否认缺陷。

但至少有几点能够肯定
1.C++比C更类型安全(而且为此用户几乎不必支付任何费用)
举例来说,那些鄙视C++ const之辈大多由于自己根本不清楚知道代码负责只读还是只写还是又读又写,于是由于本身不了解自身思维的含糊不清而责怪给予警告以及限制的const,此辈不是要求自由,而是要求放纵,放纵其不羁的编码要求以及混乱的思维。
2.封装的思维的确很重要
剥开多态不谈,光就C++的类封装功能,其代码远比同等C代码让人使用起来舒服。

P.S.不要认为我是一个C++卫道士,但这些恰恰是写给那些C卫道士们的~
如果你想更多地消除对C++的偏见转而熟悉他,可以参考 http://topic.csdn.net/u/20070606 ... c-acb65a90db40.html以及CSDN上longshanks其他的文章,longshanks是我一位值得尊敬的朋友,他的文章很客观,易懂严谨且不肤浅
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值