1、构造函数
- 构造函数的函数名与类名相同,
- 没有返回值,前面无需加void,
- 可以包含参数,也可以发生重载。
- 在创建对象时自动调用一次构造函数。
class Person
{
public:
Person()//构造函数
{
cout << "Person 构造函数的调用" <<endl;
}
};
2、析构函数
- 进行清理操作
- 没有返回值,不写void
- 函数名与类名相同
- 不可以有参数,不可以重载
- 对象在销毁前,会自动调用析构函数,且只会调用一次
~Person()
{
cout << "Person 的析构函数调用" << endl;
}
完整代码实现:
#include<iostream>
using namespace std;
class Person
{
public:
//1、构造函数
//没有返回值,不用写void
//函数名与类名相同
//构造函数可以有参数,可以发生重载
//创建对象时,构造函数会被自动调用,而且只调用一次
Person()
{
cout << "Person 构造函数的调用" <<endl;
}
//2、析构函数
//进行清理操作
//没有返回值,不写void
//函数名与类名相同
//不可以有参数,不可以重载
//对象在销毁前,会自动调用析构函数,且只会调用一次
~Person()
{
cout << "Person 的析构函数调用" << endl;
}
};
//构造函数与析构函数若不外界干涉,编译器会自动创建空的析构和构造函数
void test01()
{
Person p;
}
int main()
{
test01();
return 0;
}
PS:
默认情况下,编译器至少添加三个类:
1、默认构造函数(无参,函数体为空)
2、默认析构函数(无参,函数体为空)
3、默认拷贝构造函数,对属性进行值拷贝
构造函数调用规则:
1、若用户自定义有参构造函数,则编译器不提供无参构造函数,但会提供默认拷贝函数
2、若用户自定义构造函数,则编译器不提供无参构造函数和有参构造函数