c++编程和c在思想上最大的差别

  从正规的血统上来说,c++跟java一样是面向对象编程语言,而c是面向结构的编程语言。但是,在现实中,有大量的系统虽然用cpp编写,但是100%跟java一样,使用面向对象的几乎没有,绝大部分都是结合体,所以,作为一个恰当的比喻,我们可以说面向对象是概念车,而对象、类则是量产车。典型的,标准库,c++使用的就是命名空间封装的c标准库。

  从更加一般意义上来说,c++的命名空间就是面向对象的更早期的体现了,而在现实的non-trivial系统中,随处可见使用命名空间实现的封装,而不是class/interface和exception。这一点应该来说,是很多c++和c代码的差别之处了,大部分的三方类库都会使用namespace进行自包含。所以,就c++编程而言,一开始潜意识的根据namespace的方式去理解和学习,就不会跟c一样的感觉那么多的意大利面条了,而且条理上也会清晰很多。至于所谓正统的OO实现,如果没有多少经验或者刚入门的话,你会发现很多遗留代码不是纯OO的,所以就当class/interface和exception只是OO的一种实现就好了。

  但是c++相比c来说,有很多现成的工具库可用,比如字符串拼接通过snprintf、strcat可太不方便了,我们有时候就不想在搞临时变量。还有一般意义上使用各种列表、hash、正则等基本功能,所以除非非常高频的逻辑使用非常注意的c开发,大部分低频偏工具类的功能都应该使用c++开发,借助c++ 11、stl、boost、json、xml以及各种数据库的c++库,开发效率和性能都可以大大提升,同时没有java的垃圾回收和OOM问题。所以c with c++会是比较好的模式,c++ with c的话,基本上时间一长就没有c了。

  C++20与C++的持续演化.pdf

  C++语言设计演化.pdf

       c++元编程的适用场景示例

posted @ 2017-01-23 10:56  zhjh256  阅读(201)  评论(0编辑  收藏  举报