面试题答案
一键面试- 正常创建对象时构造函数和析构函数的调用顺序:
- 构造函数调用顺序:
- 首先调用
Base
类的构造函数。 - 然后调用
Derived
类的构造函数。
- 首先调用
- 析构函数调用顺序:
- 当对象被销毁时,首先调用
Derived
类的析构函数。 - 然后调用
Base
类的析构函数。
- 当对象被销毁时,首先调用
- 构造函数调用顺序:
- 在Derived类构造函数中抛出异常时的情况:
- 如果在
Derived
类构造函数中抛出异常,由于Derived
类对象没有完全构造成功,那么Derived
类的析构函数不会被调用。 - 但是
Base
类的构造函数已经执行完毕,Base
类对象已经构造成功,所以Base
类的析构函数会被调用,以清理Base
类对象分配的资源 。同时,因为对象没有完全构造成功,在堆上分配的Derived
类对象的内存会被释放(如果使用new
操作符,new
操作符会自动处理内存释放,防止内存泄漏)。
- 如果在