类名(const 类名 &变量名)
注意事项:没有牵扯指针的情况就可以不去实现
拷贝构造函数是一种特殊的构造函数,函数的名称必须和类名称一致,它必须的一个参数是本类型的一个引用变量。
如果用户定义有参构造函数,c++不在提供默认无参构造,但是会提供默认拷贝构造。
如果用户定义拷贝构造函数,c++不会再提供其他构造函数。
2、浅拷贝、深拷贝 值类型(基本类型):字符串(string)、数值(number)、布尔值(bool)、undefined、null ;
引 用 类 型 : 对象(Object)、数组(Array)、函数(Function)
浅拷贝:创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。
如果属性是基本类型,拷贝的就是基本类型的值,
如果属性是引用类型,拷贝的就是内存地址 。
深拷贝:将一个对象从内存中完整的拷贝一份出来,从堆内存中开辟一个新的区域存放新对象。
区别:浅拷贝基本类型之间互不影响,引用类型其中一个对象改变了地址,就会影响另一个对象;
深拷贝改变新对象不会影响原对象,他们之间互不影响。
总结:如果属性有在堆区开辟的,一定要自己提供拷贝构造函数,防止浅拷贝带来的问题。
3、构造与析构的顺序是怎么样的? 顺序与什么有关从上至下,从左往右,与初始化列表无关。
(1)存在继承关系时,先执行父类的构造函数,再执行子类的构造函数;
(2)当一个类中含有对象成员时,在启动本类的构造函数之前,先分配对象空间,
按对象成员的声明顺序执行他们各自的构造函数,再继续执行本类的构造函数;
对象成员的构造函数的调用顺序,不受初始化列表中的顺序影响,而只和对象成员在类中的定义顺序相关。
(3)对于非静态的局部对象,他们的析构函数的执行顺序与构造函数相反。是为了防止可能的依赖关系。
4、静态函数的作用、好处?静态成员只有一份内存,在编译时分配,所有类对象共享该内存,所以静态变量通常做计数 或者 接口性 的工作。
静态成员:1、静态成员属性(初始化)
1.1、 静态成员属性必须类内声明,类外初始化
2、静态成员函数
2.1、 静态成员函数只能使用静态成员变量
2.2、 静态成员函数可以类内实现也可以类外实现
访问方式:
1、通过类名
2、通过对象
注意事项:静态变量不占类的内存空间。



