浅谈C与C++的不同(读经典书effective C++)

不知道为什么就认准了C++往下走下去了。

视C++为一个语言联邦(effective c++)。形容的很贴切,C++并不是一个带有一组守则的一体语言,它是由多个次语言组成的语言联邦,每个次语言都有自己的规约。
C++最开始的名称是C with classes,我们可以从这里理解c与c++的血缘关系,也可以感知到C++的发展轨迹。
c++是多重范型的编程语言,同时支持过程形式、面向对象形式、函数形式、泛型形式、元编程形式(?还在后面,稍等)。

C++的四个次语言(或者说C++比C多了什么):
1.C。C++以C为基础。区块、语句、预处理器、内置数据类型、数组、指针都来自于C。所以当我们在编写基础代码时,仍然在C成分的工作,感觉上也就没有什么C++与C的差别了。
2.面向对象C++(object—Oriented)。这部分就是C with classes所表达的。而这其中包括classes(构造、析构),封装,继承,多态,虚函数(动态绑定)等。
3.templateC++。C++泛型编程的根源。(希望以后工作中可以有模板的使用真实感受感受模板的威力)。
4.异常处理机制(稍后补,还没看深)。
5.STL。C++的STL比C多了很多好用的内容,容器、适配器算法等。

在某个次语言中各种守则与通例都倾向于简单,直观易懂,更重要的是容易记住。然而当从一个次语言移网另一个次语言守则可能会改变,例如对内置类型(C—like)pass by value 通常比pass by reference高效,但从Cpart of C++移往object oriented of C++,由于用户自定义构造函数和析构函数的存在,pass by value往往更好。而在template c++中 pass by value又再次适用,因为你并不知道你处理的对象的类型,而迭代器和函数本身已经是指针了,所以by value 这时候更保险。

当然c++与C的核心区别是在使用时的编程思想的不同(面向对象、面向过程的不同)。编程思想也只有在实践中才能体会的深刻。
附reference截图加以比较。
这里写图片描述
这里写图片描述

所以,加油啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值