1、C和C++区别
(1)C语言是一个结构化语言,它的重点在于算法与数据结构,主要用于嵌入式领域,驱动开发等于硬件直接打交道的领域,C++是面向对象的编程语言,其偏重于构造对象模型,并让这个模型能够契合与之对应的问题,可以用于应用开发,用户界面等操作系统打交道的领域
(2)C++增加了C不具有的关键字,C程序员可以省略函数原型,而C++不可以,一个不带参数的C函数原型必须把void写出来,而C++可以使用空参数列表
(3)C++中new和delete是对内存分配的运算符,取代了C中的malloc和free
2、类里面的static变量范围
如果是private,类的内部才能访问,public全部可以访问,protected则可以在该类和其子类中访问
可以实现隐藏,不用担心同名函数和同名变量命名冲突,static变量放在静态存储区,与全局变量具备同样属性,默认初始化为0,
3、虚函数和纯虚函数
虚函数是实现多态的机制,其核心理念是通过基类访问派生类的函数
虚函数,子类可以重新定义基类的虚函数,称之为复写。虚函数实现的过程:通过对象内存中的虚函数指针vptr找到找到虚函数表vtbl,在通过vtbl中的函数指针找到对应虚函数的实现区域并进行调用
对于纯虚函数,子类必须提供纯虚函数的个性化实现
4、模板和容器
5、struct和类class有什么区别
struct中可以使用public、private、protected等属性,在纯C语言环境下会出问题,struct中可以添加方法,可以继承属性
struct是各种数据类型的组合,是一种复合数据类型,class是一个对象的方法和属性的集合,更注重数据的安全性
(1)默认的访问属性不同
struct默认的访问属性是public,class默认的访问属性是private
(2)默认的继承属性不同
struct默认的继承方式是public,class默认的继承方式是private
在C++中通常更推荐使用class,数据安全性更高,struct一般是作为不同类型的合集
6、指针和引用有什么区别
(1)引用必须被初始化,但是不分配存储空间且必须初始化为另一个变量,指针可不初始化,可以指向一个地址,也可以为空,需要分配存储空间
(2)引用初始化以后不能被改变,指针可以改变所指的对象
(3)不存在指向空值的引用,但是存在指向空值的指针