C和C ++有什么区别?


C ++是带有类的C。程序员


早在C流行而且没有C ++的时候,Bjarne Stroustrup就选择了C,并使用来自Simula67语言的类对其进行了扩充,并建立了C ++。这些类为面向对象范例打开了一个全新的世界。算法


最初,没有专用的C ++编译器。当您编写C ++时,编译器将其转换为C(人类很难理解的C,可是C仍然能够),而后编译C。可是,C ++编译器确实出现了,新功能也出现了。微信


C和C ++之间的一些区别是:数据结构

在C语言中,对于输入或输出,咱们使用诸如gets(),puts(),scanf(),printf()等函数。这些函数指望值具备特定的数据类型,或者对于scanf()或printf(),咱们必须指定咱们要函数处理的数据类型。在C ++中,咱们有时可使用这些功能。可是,人们一般更喜欢使用cin和cout对象。请注意,这些是类的对象,当咱们执行I / O时,它们自己将肯定变量的数据类型。函数

C不支持函数重载。您不能具备相同名称的多个功能。所以,假设您有一个计算整数的平方的函数和计算浮点数的平方的函数,则必须给它们分别命名。在C ++中,给它们起相同的名称,而后语言将根据传递给该函数的参数类型来肯定使用哪一个函数。编码

C不支持异常处理。您应该避免因为意外事件转折而致使运行时错误的状况。在C ++中,您能够引起异常并相应地处理它们。在进行大型项目时,这很是有用。.net

除了函数重载以外,C ++还支持C中不存在的运算符重载。是否曾经想过用+运算符链接两个字符串?好吧,尽管C运气很差,可是使用C ++能够作到。固然,类使这一切成为可能,而且您必须使用std :: string而不是常规字符串,可是,为了保持理智,std :: string要好得多。对象

上一点将咱们引到了std :: string。这是一个用于字符串的(惊奇类)类。比C风格的字符串更易于使用和阅读。继承

对于动态内存分配,C使用malloc()和free(),可是C ++具备更好的new和delete运算符。事件

命名空间变得愈来愈流行,尤为是在应用程序开发中,而且C ++确实支持C语言中缺乏的命名空间。

C的一个使人讨厌的功能是您须要在它们的做用域的开始即全部的变量或函数的左括号以后声明全部变量。在C ++中,在任何位置定义一个变量,最好是最靠近使用它的地方。

在C中,全局变量能够具备多个声明。C ++更为严格,不容许这样作。

毕竟,C ++是面向对象的。诸如抽象,继承,多态之类的事情没法在C中完成。它为您带来了全新的范例。若是喜欢,请使用它。若是没有,您能够不用它(可是C ++的许多功能都是围绕类构建的)。

是否曾经想过建立仅在处理的数据类型上有所不一样的相似功能?您能够经过函数重载来作到这一点,但这一般用于名称相同但行为不一样的函数。若是您想作彻底同样的事情但针对不一样的数据类型该怎么办?为此编写多个函数没有多大意义。并且,函数重载不支持仅返回类型不一样的函数。模板就在这里。您能够建立泛型函数和类,并将其与任何数据类型一块儿使用。C ++有,C没有。

C ++具备STL,这是一个很是有用的模板化类列表(所以,您能够将它们用于各类数据类型)。您已经准备好算法,数据结构,迭代器等。也许每一个C ++程序员都会夸赞C编码器。

本文分享自微信公众号 - 黑客秘房(hackers0101)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索