C++核心编程和桌面应用开发 第四天(构造/析构函数)
1.构造函数
- 没有返回值,无需写void
- 函数名和类名相同
- 可以有参数,可以发生函数重载
1.1有参/无参构造函数
1.2普通/拷贝构造函数
1.2.1拷贝构造函数
函数名(const 函数名 &)
class Person()
{
public:Person() {}Person(int a) {}Person(const Person &p) {}
}
调用时机:
①用已创建好的对象初始化新对象
Person p1(18);
Person p2(p1);
②值传递的方式给函数参数传值
void func(Person p){...}Person p1(28);
func(p1);
//此时,p1作为实参,p作为形参,func函数会调用Person的拷贝构造函数,将p1的值传递给p
③以值的方式,返回局部对象
Person func()
{Person p(38);return p;
}Person p1=func();
//p为局部对象,返回时会调用拷贝构造函数构建一个新的对象给p1,p在函数执行完之后会释放
2.析构函数
- 没有返回值,无需写void
- 函数名和类名相同,函数名前加~
- 不可以有参数,不可以发生函数重载