面试题答案
一键面试构造函数
- 作用:用于初始化类对象的数据成员,为对象分配必要的资源。比如,当创建一个包含动态分配内存成员的类对象时,构造函数可负责分配该内存。
- 特点:
- 构造函数与类名相同。
- 构造函数没有返回类型,包括void。
- 可以有多个构造函数,形成函数重载,以满足不同的初始化需求。例如,一个类可以有默认构造函数(无参数)和带参数的构造函数。
- 调用时机:在创建类对象时自动调用。如果是在栈上创建对象,如
ClassName obj;
(使用默认构造函数)或ClassName obj(arg1, arg2);
(使用带参数构造函数),对象创建时构造函数立即执行。如果是使用new
在堆上创建对象,如ClassName* ptr = new ClassName();
,构造函数在内存分配后立即执行。
析构函数
- 作用:用于释放对象在生命周期中分配的资源,如动态分配的内存、打开的文件句柄等。防止资源泄漏。
- 特点:
- 析构函数名是在类名前加波浪号
~
。 - 析构函数没有返回类型,也没有参数,一个类只能有一个析构函数。
- 析构函数名是在类名前加波浪号
- 调用时机:当对象生命周期结束时自动调用。对于栈上的对象,当对象离开其作用域时调用析构函数,如函数结束时局部对象被销毁。对于堆上使用
new
创建的对象,当使用delete
操作符释放对象时调用析构函数,如delete ptr;
。如果是类的成员对象,当包含它的对象被销毁时,成员对象的析构函数也会被调用。