C++析构函数

析构函数是C++类的一个重要概念,它在对象销毁时执行,用于完成一些清理工作。本文将详细介绍C++析构函数的相关用法。

一、析构函数基本概念

析构函数会在对象销毁前自动调用,执行一些清理操作。析构函数名与类名相同,前面加一个波浪号~:

class Person { 
public:
  ~Person() {
    // 析构函数代码 
  }
};

当对象销毁时,比如离开作用域,析构函数会执行:

void func() {
  Person p;
  // 这里的p离开作用域时,析构函数执行
} 

二、析构函数使用场景

析构函数常见的使用场景有:

  1. 释放对象申请的资源,如文件、网络等
  2. 删除new分配的堆内存
class Person {
public:
  ~Person() {
    delete[] data; // 释放data堆内存
  }

private:
  int* data = new int[100]; 
};
  1. 执行一些对象销毁前的必要清理工作

三、析构函数注意事项

  • 析构函数不可以有参数和返回值
  • 析构函数在程序结束时可能不会执行
  • 对象数组会依次调用每个元素的析构函数

四、析构函数与RAII

析构函数配合RAII可以实现自动资源管理:

class File {
public:
  File(string name) { 
    open(name); 
  }

  ~File() {
    close(); 
  }

private:
  void open(string name) {}
  void close() {}
};

析构函数在C++编程中是一个非常有用的概念,合理利用析构函数可以简化资源管理,改善代码质量。