面试题答案
一键面试普通类对象在栈上创建和销毁时构造与析构函数的调用
- 创建时:当在栈上创建一个普通类对象时,例如
ClassName obj;
,编译器会在执行到该声明语句时,自动调用类的构造函数。构造函数负责对对象进行初始化,比如为对象的成员变量分配内存并赋初值等操作。 - 销毁时:当对象的作用域结束时,例如包含该对象声明的代码块结束,编译器会自动调用类的析构函数。析构函数负责清理对象在生命周期中所占用的资源,如释放动态分配的内存等。
对象数组的构造与析构函数调用特点
- 创建时:当创建对象数组,如
ClassName arr[size];
,编译器会按照数组元素的顺序,依次调用每个元素的构造函数。也就是说,对于数组中的每一个对象,都会调用一次构造函数来完成初始化。 - 销毁时:当对象数组的作用域结束,编译器会按照与构造函数调用相反的顺序,依次调用每个元素的析构函数。即先调用数组中最后一个对象的析构函数,然后倒数第二个,以此类推,直至第一个对象的析构函数被调用,以确保所有对象占用的资源都被正确释放。