MST

星途 面试题库

面试题:C++中构造函数与析构函数自动调用机制基础

请简述在C++中,一个普通类对象在栈上创建和销毁时,构造函数与析构函数是如何自动调用的?如果涉及对象数组,这个调用过程又有什么特点?
10.4万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

普通类对象在栈上创建和销毁时构造与析构函数的调用

  1. 创建时:当在栈上创建一个普通类对象时,例如 ClassName obj;,编译器会在执行到该声明语句时,自动调用类的构造函数。构造函数负责对对象进行初始化,比如为对象的成员变量分配内存并赋初值等操作。
  2. 销毁时:当对象的作用域结束时,例如包含该对象声明的代码块结束,编译器会自动调用类的析构函数。析构函数负责清理对象在生命周期中所占用的资源,如释放动态分配的内存等。

对象数组的构造与析构函数调用特点

  1. 创建时:当创建对象数组,如 ClassName arr[size];,编译器会按照数组元素的顺序,依次调用每个元素的构造函数。也就是说,对于数组中的每一个对象,都会调用一次构造函数来完成初始化。
  2. 销毁时:当对象数组的作用域结束,编译器会按照与构造函数调用相反的顺序,依次调用每个元素的析构函数。即先调用数组中最后一个对象的析构函数,然后倒数第二个,以此类推,直至第一个对象的析构函数被调用,以确保所有对象占用的资源都被正确释放。