构造函数是在对象创建时自动调用的函数,用于初始化对象的成员变量。构造函数的名称必须与类名相同,不需要指定返回类型,可以重载,可以带参数。示例代码如下:
class Point {
public:
Point() { // 默认构造函数
x_ = y_ = 0;
}
Point(int x, int y) { // 带参数的构造函数
x_ = x;
y_ = y;
}
~Point() { // 析构函数
cout << "Point destructor is called" << endl;
}
private:
int x_, y_;
};
int main() {
Point p1; // 调用默认构造函数
Point p2(1, 2); // 调用带参数的构造函数
return 0;
}
析构函数是在对象被删除或超出作用域时自动调用的函数,用于清理对象的资源。析构函数的名称必须与类名相同,以一个波浪线(~)开头。示例代码如下:
class AutoFile {
public:
AutoFile(char* filename) {
file_ = fopen(filename, "r");
if (file_ == NULL) {
cout << "Can't open file " << filename << endl;
exit(-1);
}
}
~AutoFile() {
fclose(file_);
}
private:
FILE* file_;
};
int main() {
AutoFile f("test.txt"); // 自动生成一个对象,并在作用域结束时自动调用析构函数释放文件资源
return 0;
}