日志13
构析函数,分为构造函数和析构函数,是 C++ 中用于管理对象生命周期的重要机制。以下是它们的定义和使用说明:
1. 构造函数 (Constructor)
定义:
- 作用:在创建对象时自动调用,用于初始化对象。
- 特点:名称与类名相同。没有返回值(甚至不能写 void)。可以被重载(通过参数列表区分)。支持默认参数。
示例代码:
#include <iostream>
using namespace std;
class MyClass {
public:
int value;
// 构造函数
MyClass(int v) {
value = v;
cout << "Constructor called, value = " << value << endl;
}
};
int main() {
MyClass obj(10); // 自动调用构造函数
return 0;
}
注意:
- 如果用户未显式定义构造函数,C++ 提供一个默认构造函数(无参数,什么都不做)。
- 当有多个构造函数时,称为构造函数的重载。
2. 析构函数 (Destructor)
定义:
- 作用:在对象生命周期结束时自动调用,用于清理资源(如内存释放、文件关闭等)。
- 特点:名称为类名前加 ~。没有参数,也不能被重载。没有返回值。
示例代码:
#include <iostream>
using namespace std;
class MyClass {
public:
int value;
// 构造函数
MyClass(int v) : value(v) {
cout << "Constructor called, value = " << value << endl;
}
// 析构函数
~MyClass() {
cout << "Destructor called, value = " << value << endl;
}
};
int main() {
MyClass obj(20); // 构造函数自动调用
// 程序结束时,析构函数自动调用
return 0;
}
注意:
- 析构函数常用于释放动态分配的资源,避免内存泄漏。
- 析构函数的调用顺序与构造函数的调用顺序相反(后构造的对象先析构)。
3. 构析函数的结合使用
当类中涉及动态分配资源时,构析函数尤为重要。
示例代码:
#include <iostream>
using namespace std;
class MyClass {
private:
int* ptr;
public:
// 构造函数
MyClass(int v) {
ptr = new int(v); // 动态分配内存
cout << "Constructor: allocated memory for " << *ptr << endl;
}
// 析构函数
~MyClass() {
delete ptr; // 释放内存
cout << "Destructor: memory released" << endl;
}
};
int main() {
MyClass obj(30);
return 0;
}
输出:
Constructor: allocated memory for 30 Destructor: memory released
小结:
- 构造函数负责初始化,析构函数负责清理资源。
- 动态资源管理时,析构函数是保证程序安全性的关键。
查看9道真题和解析

