1、C++和C语言最大的区别是什么
大体上:C是面向过程的语言,而C++是面向对象的语言。
面向过程:类调用时需要实例化,开销比较大,单片机、嵌入式开发。面向对象:封装、继承、多态,易维护、易复用、易扩展
C++更是拓展了面向对象设计的内容,如类Class、继承、虚函数等、以及一个非常强大的C++标准模板库STL,另外一个Boost库现在也归属C++标准库。
具体:
1)动态内存管理:C语言通过malloc和free来进行堆内存的分配和释放,而C++是通过new和delete来管理堆内存的
malloc只负责开辟内存,没有初始化功能;开辟内存需要传入字节数,如malloc(100);表示在堆上开辟了100个字节的内存.
new不但开辟内存,还可以进行初始化,如new int(10);
int *p1 = (int *)malloc(sizeof(int));// 指定大小,且类型转换
int *p2 = new int(10);// 初始化了
2)struct和class:class是对struct的扩展,struct默认的访问权限是public,而class默认的访问权限是private。C++中,struct关键字不仅可以用来定义结构体,它也可以用来定义类, 在C语言中struct定义的变量中不能有函数,而在C++中可以有函数。
3) C++函数默认值: int FUN(int a = 10);代表没有传参调用的时候,自动给a赋一个10的初始值。但C没有。
4) 函数重载:由于参数类型不同可以构成重载compare(int a,int b) compare(double a,double b)
5)inline内联函数:只有C++有,直接写在头文件中。
2、面向对象:三大特点:封装、继承、多态。
封装:代码模块化。类可以把自己的数据和方法只让可信的类或者对象访问private public protected,隐藏细节
继承与虚继承:代码复用。编写新的类,既能共享其基类,又能根据需要覆盖或添加行为。扩展已存在的代码模块
多态(虚函数):一个接口多种实现。在运行时根据对象的动态类型来选择运行函数的哪个版本。只作用于虚函数,需要通过基类指针或引用调用。
3、说一下指针和引用的区别
本质:引用是别名,指针是实体,这个变量存储的是一个地址。
具体:
1、指针的值可以为空,但是引用的值不能为NULL,并且

这篇博客总结了BIGO公司C++面试中的重点问题,涵盖了C++和C的区别,面向对象特性,指针与引用,内存管理,内联函数,const用法,成员变量与局部变量的区别,堆栈内存,new与malloc的区别,以及析构函数的虚函数特性。此外,还讨论了C++11的新特性。
最低0.47元/天 解锁文章
1587

被折叠的 条评论
为什么被折叠?



