C/C++面试八股题(三)
目录:
1.请你描述一下C++所有的构造函数都有什么?
2.析构函数可以是虚函数吗?
3.什么是拷贝构造函数?浅拷贝深拷贝区别?
内容:
1.请你描述一下C++所有的构造函数都有什么?
构造函数的特点:
函数名与类名相同
- 这是构造函数最重要的特点之一。例如,对于类
MyClass
,其构造函数的名字必须是MyClass
。这种命名规则使得编译器能够在创建对象时准确地识别出应该调用的构造函数。
在对象创建时自动调用
- 当创建一个类的对象时,相应的构造函数会自动被调用。这个调用过程是由编译器在后台完成的。
没有返回值类型(包括void
)
- 构造函数不能指定返回值类型,这是因为构造函数的主要目的是初始化对象,而不是返回一个值。它的任务是在对象创建时为对象的成员变量分配内存空间并进行初始化。
可以用于初始化成员变量
- 构造函数的主要用途之一是初始化对象的成员变量。可以在构造函数的函数体中或者使用初始化列表来完成成员变量的初始化。
可以有多个重载形式
- 可以根据不同的参数列表来定义多个构造函数,这就是构造函数的重载。这样可以通过不同的方式初始化对象。
C++中的构造函数分类:
默认构造函数
- 定义:用于创建对象并初始化其成员。如果类中没有定义任何构造函数,编译器会自动生成一个默认构造函数。这个默认构造函数会对类中的基本数据类型成员进行默认初始化(例如,int型成员初始化为 0,指针型成员初始化为nullptr)。
- 例子:
class MyClass { public: int num; // 这是一个默认构造函数 MyClass() { num = 0; } }; int main() { MyClass obj; return 0; }
MyClass
类有一个默认构造函数。当在main
函数中创建obj
对象时,默认构造函数被调用,将num
成员初始化为 0。带参数的构造函数
- 定义:带参数的构造函数允许在创建对象时传递参数,用于初始化对象的成员。通过这种方式,可以根据不同的参数值来创建具有不同初始状态的对象。
- 例子:
class Rectangle { public: int width; int height; Rectangle(int w, int h) { width = w; height = h; } }; int main() { Rectangle rect(5, 3); return 0; }
- 这里的
Rect
类有一个带两个参数的构造函数。在函数中创建对象时,传递了两个参数 5 和 3,分别用于初始化和成员。
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
嵌入式/C++八股 文章被收录于专栏
本人双飞本,校招上岸广和通。此专栏覆盖嵌入式常见面试题,有C/C++相关的知识,数据结构和算法也有嵌入式相关的知识,如操作系统、网络协议、硬件知识。本人也是校招过来的,大家底子甚至项目,可能都不错,但是在面试准备中常见八股可能准备不全。此专栏很适合新手学习基础也适合大佬备战复习,比较全面。最终希望各位友友们早日拿到心仪offer。也希望大家点点赞,收藏,送送小花。这是对我的肯定和鼓励。 持续更新