day3 分文件创建类分文件创建类/构造构造/析构析构/深浅拷贝深浅拷贝/
分文件分文件
.h放声明
.cpp放定义, 函数前面要加命名
构造和析构构造和析构
编译器会默认提供构造函数, 析构函数, 拷贝构造函数(对非静态成员属性简单值拷贝)
编译器会默认调用构造和析构, 如果不写, 系统会默认实现一个空的
必须写在public下
构造函数构造函数
与类名相同, 没有返回值, 不写void, 可以发生重载->可以有参数的意思
自动调用, 只调用一次
class A{
public:
A(){
//构造函数
}
};
析构函数析构函数
与类名相同, 前面加~, 没有返回值, 不写void, 不能有参数
自动调用, 只调用一次
class A{
public:
~A(){
//析构函数
}
};
构造函数的分类及调用构造函数的分类及调用
拷贝构造函数必须加上const
默认构造函数在创建对象的时候不能加()
分类
按参数
无参构造函数
Person p1;
person p1();错误
有参构造函数
Person p1(1000);或者 Persion p1=Persion(1000);
Person(1000); 匿名对象
按类型
普通构造函数
拷贝构造函数
Person(const Person& p)
Person p1(p2);
Person p1 = Person(p2);
拷贝构造函数的调用时机拷贝构造函数的调用时机
用已经创建好的对象来初始化新的对象
以值传递的方式给函数参数传值
以值得方式返回局部对象
vs release 会做优化
构造函数的调用规则构造函数的调用规则
写了自己的构造函数, 编译器就不会提供默认的构造函数, 但是会提供默认拷贝构造函数
写了自己的拷贝构造, 编译器就不会提供其他的构造函数
评论0
最新资源