MST

星途 面试题库

面试题:C++类中构造函数和析构函数的作用及特点

请简述C++类中构造函数和析构函数的作用是什么,它们各自有哪些特点,并且说明在类对象的生命周期中,构造函数和析构函数是如何被调用的。
36.3万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

构造函数

  1. 作用:用于初始化类对象的数据成员,为对象分配必要的资源。比如,当创建一个包含动态分配内存成员的类对象时,构造函数可负责分配该内存。
  2. 特点
    • 构造函数与类名相同。
    • 构造函数没有返回类型,包括void。
    • 可以有多个构造函数,形成函数重载,以满足不同的初始化需求。例如,一个类可以有默认构造函数(无参数)和带参数的构造函数。
  3. 调用时机:在创建类对象时自动调用。如果是在栈上创建对象,如ClassName obj;(使用默认构造函数)或ClassName obj(arg1, arg2);(使用带参数构造函数),对象创建时构造函数立即执行。如果是使用new在堆上创建对象,如ClassName* ptr = new ClassName();,构造函数在内存分配后立即执行。

析构函数

  1. 作用:用于释放对象在生命周期中分配的资源,如动态分配的内存、打开的文件句柄等。防止资源泄漏。
  2. 特点
    • 析构函数名是在类名前加波浪号~
    • 析构函数没有返回类型,也没有参数,一个类只能有一个析构函数。
  3. 调用时机:当对象生命周期结束时自动调用。对于栈上的对象,当对象离开其作用域时调用析构函数,如函数结束时局部对象被销毁。对于堆上使用new创建的对象,当使用delete操作符释放对象时调用析构函数,如delete ptr;。如果是类的成员对象,当包含它的对象被销毁时,成员对象的析构函数也会被调用。