对象的构造和析构
1. 对象的初始化和清理
构造函数 和 析构函数 被编译器自动调用完成对象初始化和对象清理工作。
2. 构造函数 和 析构函数
构造函数写法
与类名相同,没有返回值,不写void(可以有参数) 可以发生重载
构造函数由编译器自动调用,而不是手动,且只调用一次。
析构函数写法
与~类名相同 类名前面加一个符号“~” 也没有返回值,不写void 不可以有参数(不能)
自动调用 只会调用一次
如果没有提供构造和析构,系统会默认提供
作用域是public
3. 构造函数的分类及调用
按照参数进行分类:无参构造函数(默认构造函数)、有参构造函数(默认构造)
按照类型进行分类:普通构造函数、拷贝构造函数(const)
无参构造写法 和 调用
Person p1; // 注意不能写 Person p1(),编译器认为这是函数声明
有参构造写法 和 调用
Person p2(10) 或者 Person p2=Person(10)
Person(10) 匿名对象
拷贝构造函数
Person(const Person& p)
Person p1(p2) || Person p1 = Person(p2)
不能用拷贝构造函数初始化匿名对象