构造函数在对象实例化时被系统自动调用,仅且调用一次。
实际上定义类时,如果没有定义构造函数和析构函数,编译器就会生成一个构造函数和析构函数,只是这个构造和析构函数什么事情也不做,所以我们不会注意到。
构造函数的特点如下:
(1)构造函数必须与类名同名;
(2)可以重载,(重载?新概念,后面学到什么是重载。);
(3)没有返回类型,即使是 void 也不行。
与构造函数相反,在对象结束其生命周期时系统自动执行析构函数。实际上定义类时,编译器会生成一个析构函数。
析构函数的特点如下:
(1)析构函数的格式为~类名();
(2)调用时释放内存(资源);
(3)~类名()不能加参数;
(4)没有返回值,即使是 void 也不行。
#include <iostream>
#include <string>
using namespace std;
class Dog //定义了一个狗类,并在里面写了构造函数和析构函数
{
public:
Dog();
~Dog();
};
int main()
{
Dog dog; //使用Dog类实例化一个dog对象
cout << "构造与析构函数示例" << endl;
return 0;
}
Dog::Dog() //类的函数可以在类里实现,也可以在类外实现,不过在类外实现需要使用 "::"
{
cout << "构造函数执行" << endl;
}
Dog::~Dog() //最后对象生命周期结束时才会执行析构函数
{
cout << "析构函数执行" << endl;
}