- malloc/free与new/delete的区别与联系
- malloc/free 是c/c++标准的库函数, 需 要 \color{red}{需要} 需要头文件支持;而new/delete是c++的操作符, 无 需 \color{red}{无需} 无需头文件支持
- new建立的是一个对象,所以它做两件事,一是分配内存,二是 调 用 类 的 构 造 函 数 \color{red}{调用类的构造函数} 调用类的构造函数;同样,delete会调用类的析构函数和释放内存。而malloc和free只是分配和释放内存
- new可自己计算类型的大小,返回对应类型的指针,而malloc需要手动计算类型的大小,返回的是void*指针
-
深拷贝浅拷贝
假设B复制了A,当修改A时,看B是否会发生变化:如果B也跟着变了,说明这是浅拷贝;如果B没变,那就是深拷贝。
本质的区别是拷贝出来的对象的地址是否和原对象一样,也就是地址的复制(“位拷贝”,浅拷贝)还是值的复制(“值拷贝”,深拷贝)的区别
一个例子 -
什么是常指针,什么是指向常变量的指针?
答:常指针的含义是该指针所指向的地址不能变,但该地址所指向的内容可以变化,使用常指针可以保证我们的指针不能指向其它的变量,
指向常变量的指针是指该指针的变量本身的地址可以变化,可以指向其它的变量,但是它所指的内容不可以被修改。指向长变量的指针定义, -
函数指针和指针函数的区别?
答:函数指针是指向一个函数入口的指针;
指针函数是函数的返回值是一个指针类型。
- 定义上的区别
重载(Overload)是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同。调用的时候根据函数的参数来区别不同的函数;
重写(Override,也称为覆盖)是指在派生类中重新对基类中的虚函数重新实现。即函数名和参数都一样,只是函数的实现体不一样
-
.h和.cpp的区别与联系
.h声明函数,.cpp实现函数具体的功能 -
static关键字的作用
- static 修饰全局变量,限制了该变量的作用域为当前文件,就是说他能在当前文件中作为全局变量被访问,但不能再其他文件中被访问
- 更多内容详见C++ 中的static关键字使用场景
C/C++ 中 static 的用法全局变量与局部变量
- 虚函数是为了允许用基类的指针来调用子类的这个函数
- 纯虚函数是为了实现一个接口,起到一个规范的作用,规定继承这个类必须定义/实现这个函数。纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。