许多人倾向于写“ C / C ++”,好像他们是同一回事。尽管它们具有许多相似之处,但是显然它们并不相同。
但是C和C ++之间真正的根本区别是什么?C ++是C的增强版本,还是C中有C ++中不存在的功能?
许多人倾向于写“ C / C ++”,好像他们是同一回事。尽管它们具有许多相似之处,但是显然它们并不相同。
但是C和C ++之间真正的根本区别是什么?C ++是C的增强版本,还是C中有C ++中不存在的功能?
Answers:
以下几点与C ++有关:
发明C ++是为了管理C无法处理的复杂性。例如,C的一个常见问题是,由于没有封装,名称空间等,您可能“用完了变量名”(当然,从字面上看也不用)。
而且,C没有异常,因此错误处理非常容易出错,因为它依赖于库用户始终检查func的返回值,而带有异常的库开发人员只是抛出一个异常,以确保程序流将被停止。
C ++通过使构造函数初始化对象(由编译器自动调用)来提供帮助。与需要由程序员初始化的C结构不同(因此,另一个容易出错的区域)。
最后,OOP还吹嘘了许多其他优点,例如对象重用以及基于通用编程的概念,例如允许您重用源代码的模板和泛型等。
还有很多其他事情会占用我太多时间在这里列出。
通常,C ++支持C中存在的所有内容。显然相反是绝对错误的。
简单来说,C ++是面向对象的(例如,您有类),而C不是。
C ++的布尔类型C89没有。
他们是不同的语言。它们只是共享大多数语法。
_Bool
,具有bool
别名)。
long long
数据类型还不是ISO C ++的一部分。
就个人而言,我认为模板是C ++添加到C的最重要的功能。
#define GENERATE_INTERFACE(T) T T##_func(T x);
; (类型)C中的安全重载/模板。我同意Thomas的观点,即析构函数是C缺少的更重要的功能。但是析构函数通常会隐藏重要的代码。在我看来,命名空间(作用域)是最重要的。