构造 | 析构 |
作用:给对象成员赋值 | 作用:对象撤销时释放其内存空间 |
函数名与类名相同 | 函数名与类名相同 |
必须声明为公有成员函数 | 必须声明为公有成员函数 |
没有返回值,不用声明函数类型 | 没有返回值,不用声明函数类型 |
可以重载,可以带参数可以不带参数 | 不可以重载 |
创建对象时系统自动调用,且只调用一次 | 销毁对象时调用,且只调用一次 |
类名::类名() | 类名::~类名()(名称前j加~) |
注意:构造函数和析构函数都是必须有的实现,如果我们不创建,系统也会自动创建。
下面代码对比构造函数、析构函数和普通成员函数。
class A {
private:
int x;
public:
//函数声明对比
A(int a); //带参构造函数
~A(); //析构函数
void Show(); //普通成员函数
};
//函数实现(定义)对比
A::A(int a) {
cout << "构造函数被调用"<<endl;
x = a;
}
A::~A() {
cout << "析构函数被调用"<<endl;
}
void A::Show() {
cout << "普通成员函数被调用" << endl;
cout << x<<endl;
}
int main() {
//初始化对比
A c1(10); //定义A的对象同时自动调用构造函数
c1.Show(); //调用普通成员函数
}