若人为不实现,编译器会自动实现但函数内为空
构造函数:创建对象时为对象的成员属性赋值 类名(){}
没有返回值可以有参数,可以重载系统自动调用,不用手动调用,并且只调用一次析构函数:对象销毁前清理工作 ~类名(){}
没有返回值不可以有参数,无法重载系统自动调用,不用手动调用,并且只调用一次 构造函数的分类及调用 按参数分类 无参构造(默认构造)和有参构造
按类型分类 普通构造和拷贝构造函数
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);
值传递的方式给函数参数传值