c与c++的区别有哪些
编程的学习学无止境,只掌握一门语言是远远不够的,那么c与c++的区别有哪些呢?下面是我整理的详细内容,希望对大家有所帮助!
C与C++的区别
1、C++是面向对象语言,C是面向过程语言。
2、结构:C以结构体struct为核心结构;C++以类class为核心结构。
3、多态:C可以以宏定义的方式“自定义”部分地支持多态;C++自身提供多态,并以模板templates支持编译期多态,以虚函数virtual function支持运行期多态。
4、头文件的调用:C++用< >代替” “代表系统头文件;且复用C的头文件时,去掉”.h”在开头加上”C”。
5、输入输出:鉴于C++中以对象作为核心,输入和输出都是在流对象上的操作。
6、封装:C中的封装由于struct的特性全部为公有封装,C++中的封装由于class的特性更加完善、安全。
7、常见风格:C中常用宏定义来进行文本替换,不具有类型安全性;C++中常建议采用常量定义,具有类型安全性。
8、效率:常见的说法是同等目的C通常比C++更富有效率(这其实有一定的误解,主要在于C++代码更难于优化且少有人使用编译期求值的特性)。
9、常用语言/库特性:
a、数组:C中采用内建数组,C++中建议采用vector。相比之下vector的大小可以动态增长,且使用一些技巧后增长并不低效,且成员函数丰富。
b、字符串 C中采用C风格的string(实则为字符串数组),C++中建议采用string,对比与上一条类似。
c、内存分配:C中使用malloc与free,它们是是C标准库函数,C++中建议使用new/delete代替前者,他们说是C++的运算符(这是笔试面试常考点)以C++中的new为例,new可分为operator new(new 操作)、new operator(new 操作符)和placement new(定位 new)。其中operator new执行和malloc相同的任务,即分配内存,但对构造函数一无所知;而 new operator则调用operator new,分配内存后再调用对象构造函数进行对象的构造。其中operator new是可以重载的。placement new,就是operator new的一个重载版本,允许你在一个已经分配好的内存中构造一个新的对象。
d、指针:C中通常使用的是原生指针(raw pointer),由于常出现程序员在申请后忘记释放造成资源泄漏的问题,在C++98中加入了“第一代”基于引用计数的智能指针auto_ptr,由于初代的各种问题(主要是无法解决循环指针),在03标准也就是TR1中引入了shared_ptr,weak_ptr和unique_ptr这三个功能各异的智能指针,并与11标准中正式确定,较好的解决了上述问题。
C++与C先学哪个
先学C再学c++
由于语言的简洁性,许多初级程序员会在c++之前学习C。作为一种过程语言,初学者通常更容易掌握。它是一种更简单的语言,具有更少的选项,因此,它是编程的坚实基础。许多程序员从C语言转向Java或c++。通过先学习C语言,程序员可以适应这种语言的过程性,然后通过c++学习面向对象编程。c++比C要复杂得多,对于初学者来说是难以应付的。
先学c++再学C
对于已经习惯面向对象编程和过程编程的高级程序员来说,在C之前学习c++是一个可以理解的选择。在当今的编程世界中,c++被越来越多地使用,而且它通常被认为是更健壮的语言,尽管C更适合某些应用程序。
对特定领域感兴趣的程序员,比如上面提到的视频游戏行业,可能不会使用C语言,事实上,可能永远都不需要使用它。此外,一些人可能会发现同时学习C和c++很令人困惑,因为这两种语言有相似之处,很容易让开发人员出错。