关注我们
  • 公众号

  • 抖音号

  • 小程序

联系方式: 400-8162-938
栏目导航

C++的析构函数

来源:华未云

更新:2025-02-14 17:27:05|关注1

析构函数(Destructor)

析构函数也是一种特殊的成员函数,它会在对象销毁时自动调用,用于执行一些清理工作,如释放对象占用的资源。析构函数的名称是在类名前加上波浪号(~),并且没有返回类型和参数。

特点:

  1. 自动调用:当对象生命周期结束时,析构函数会自动被调用。这包括对象离开其作用域(如函数返回时局部变量被销毁)、对象被显式删除(使用delete操作符)或程序结束时全局/静态对象被销毁。

  2. 清理资源:析构函数用于释放对象在生命周期中分配的资源,如动态内存、文件句柄、网络连接等。

  3. 无返回值和参数:析构函数没有返回类型和参数。

  4. 每个类只有一个:每个类只能有一个析构函数,不能重载。

示例代码

#include <iostream>
using namespace std;

class MyClass {
private:
    int* ptr;

public:
    // 默认构造函数
    MyClass() {
        cout << "默认构造函数被调用" << endl;
        ptr = new int(10); // 分配动态内存
    }

    // 参数化构造函数
    MyClass(int value) {
        cout << "参数化构造函数被调用" << endl;
        ptr = new int(value); // 根据参数分配动态内存
    }

    // 拷贝构造函数
    MyClass(const MyClass& other) {
        cout << "拷贝构造函数被调用" << endl;
        ptr = new int(*(other.ptr)); // 深拷贝
    }

    // 析构函数
    ~MyClass() {
        cout << "析构函数被调用" << endl;
        delete ptr; // 释放动态内存
    }

    // 显示值的方法(用于测试)
    void display() {
        cout << "值: " << *ptr << endl;
    }
};

int main() {
    MyClass obj1; // 调用默认构造函数
    obj1.display();

    MyClass obj2(20); // 调用参数化构造函数
    obj2.display();

    MyClass obj3 = obj2; // 调用拷贝构造函数
    obj3.display();

    // 当main函数结束时,所有对象都会被销毁,并调用它们的析构函数
    return 0;
}

声明:以上是华未云整理的全部内容。本站资源来自及互联网公开收集,仅限学习交流使用,请遵循相关法律法规,如有侵权争议、不妥之处请联系本站删除处理!