构造函数和析构函数是C++中面向对象编程的重要概念,用于创建和销毁对象。下面将详细讲解如何在C++中使用构造函数和析构函数。
构造函数
C++中的构造函数是类的一种特殊成员函数,用于创建对象时初始化对象的各个成员变量。构造函数的名字和类名相同,没有返回类型,可以有参数。以下是构造函数的基本语法:
class ClassName {
public:
ClassName(参数列表) {
// 初始化对象的成员变量
}
};
其中,参数列表是可选的。如果没有参数,也要保留括号。以下是一个示例:
class Person {
public:
string name;
int age;
Person() {
name = "default";
age = 0;
}
Person(string n, int a) {
name = n;
age = a;
}
};
在上面的示例中,我们定义了两个构造函数。第一个构造函数没有参数,用于创建默认对象。第二个构造函数有两个参数,用于创建指定的对象。
析构函数
C++中的析构函数是类的一种特殊成员函数,用于销毁对象时释放对象占用的资源。析构函数的名字为~
加上类名,没有参数和返回类型。以下是析构函数的基本语法:
class ClassName {
public:
~ClassName() {
// 释放对象占用的资源
}
};
以下是一个示例:
class Person {
public:
string name;
int age;
Person(string n, int a) {
name = n;
age = a;
}
~Person() {
cout << "Person " << name << " is destroyed." << endl;
}
};
在上面的示例中,我们定义了一个析构函数,用于输出对象被销毁的消息。
示例
以下是一个完整的示例,演示了如何使用构造函数和析构函数创建和销毁对象:
#include <iostream>
using namespace std;
class Person {
public:
string name;
int age;
Person() {
name = "default";
age = 0;
cout << "Person " << name << " is created." << endl;
}
Person(string n, int a) {
name = n;
age = a;
cout << "Person " << name << " is created." << endl;
}
~Person() {
cout << "Person " << name << " is destroyed." << endl;
}
};
int main() {
// 使用默认构造函数创建对象
Person p1;
// 使用指定构造函数创建对象
Person p2("Tom", 20);
return 0;
}
以上程序使用构造函数创建了两个Person
对象。输出结果如下:
Person default is created.
Person Tom is created.
Person Tom is destroyed.
Person default is destroyed.
在输出结果中可以看到,默认构造函数和指定构造函数都被成功调用,并且析构函数也被成功调用释放了对象占用的资源。