📜  什么是构造函数和析构函数 c++ (1)

📅  最后修改于: 2023-12-03 15:21:49.580000             🧑  作者: Mango

构造函数和析构函数

在C++中,构造函数和析构函数是类的重要组成部分,主要目的是在对象的创建和销毁时进行一些必要的操作,如初始化成员变量、释放资源等。

构造函数

构造函数是一种特殊的成员函数,其名称与类名称相同,没有返回类型,可以有参数。在创建对象时,系统会自动调用构造函数。

构造函数的作用
  • 初始化成员变量。
  • 分配动态内存,进行必要的初始化操作。
  • 执行一些必要的操作。
构造函数的种类
  1. 默认构造函数:没有参数的构造函数。
  2. 带参构造函数:带有参数的构造函数,用于对成员变量进行初始化。
  3. 拷贝构造函数:用于复制一个已存在的对象,创建一个新的对象。
  4. 移动构造函数:用于将一个对象的资源所有权转移给另一个对象,避免复制资源。
构造函数的定义和实现
class ClassName {
public:
    ClassName();  //默认构造函数
    ClassName(int a, int b); //带参构造函数
    ClassName(const ClassName& obj); //拷贝构造函数
    ClassName(ClassName&& obj); //移动构造函数
    ...
};

ClassName::ClassName() {
    //构造函数的实现
}

ClassName::ClassName(int a, int b) {
    //构造函数的实现
}

ClassName::ClassName(const ClassName& obj) {
    //拷贝构造函数的实现
}

ClassName::ClassName(ClassName&& obj) {
    //移动构造函数的实现
}
析构函数

析构函数是与构造函数相对应的一种特殊函数,其名称以“~”开头,没有参数和返回类型。在对象销毁时,系统自动调用析构函数。

析构函数的作用
  • 释放动态分配的内存。
  • 执行必要的操作。
析构函数的定义和实现
class ClassName {
public:
    ClassName();  //默认构造函数
    ~ClassName(); //析构函数
    ...
};

ClassName::~ClassName() {
    //析构函数的实现
}
注意事项
  1. 构造函数和析构函数在访问成员变量时必须注意其作用域。
  2. 构造函数和析构函数在设计时应考虑尽可能减少资源的开销。
  3. 在使用类时,尽量避免直接调用析构函数。