若人为不实现,编译器会自动实现但函数内为空
构造函数:创建对象时为对象的成员属性赋值 类名(){}
- 没有返回值可以有参数,可以重载系统自动调用,不用手动调用,并且只调用一次
析构函数:对象销毁前清理工作 ~类名(){}
- 没有返回值不可以有参数,无法重载系统自动调用,不用手动调用,并且只调用一次
按参数分类 无参构造(默认构造)和有参构造
按类型分类 普通构造和拷贝构造函数
class test {
public:
//无参构造
test() {
cout <<"test的无参构造函数调用"<
调用:
括号法:
test p1; //**
test p2(10);
test p3(p2);
注意:调用默认构造函数时不要加()。因为编译器会认为这是一个函数声明
显示法:
test p1;
test p2=test(10);
test p3=test(p2);
若=右边单独出现test(10);称为匿名对象 特点:当前行执行结束,系统会立即回收匿名对象
注意:不要利用拷贝构造函数 初始化匿名对象。因为编译器会认为重定义对象声明
隐式转换法:
test p2=10; //有参构造
test p3=p2; //拷贝构造
拷贝构造函数的调用时机
使用一个已经创建完的对象来初始化另一个
Person p1;
Person p2(p1);
值传递的方式给函数参数传值



