1.我们不写,编译器自动生成一个构造函数;
2.我们自己写的无参,也是默认生成一个构造函数;
3.我们写的全缺省,也默认生成一个构造函数;(这个函数是最好的)
总结一下:不用传参就可以调用构造函数;
并且默认构造函数只能有一个;
总结:构造函数的细节很多,但是实际中我们用构造函数是这样的,大多数情况都要自己写构造函数完成初始化并且建议一般情况下都是写一个全却省的构造函数,这种方式能适应各种场景
拷贝构造函数的参数只有一个且必须使用引用传参,使用传值方式会引发无穷递归调用
拷贝构造函数:我们不写,编译器也自动默认生成拷贝构造函数,这个拷贝构造函数对内置类型会完成浅拷贝或者值拷贝
赋值运算符重载--:也是拷贝行为,但是不一样的是;拷贝构造是创建一个对象时,拿另一个同类对象初始化的拷贝(拿一个已经存在的对象去构造初始化另一个要创建的对象)-----------------而且赋值重载拷贝的是两个对象同时存在,都被初始化过,现在想把一个对象复制拷贝给另一个对象;
针对我们不写编译器总结一下:
构造和析构的特性是类似的,我们不写编译器内置类型不处理,自定义类型调用它的析构和构造处理;
拷贝构造和赋值重载特性是类似的,内置类型会完成浅拷贝,自定义类型会调用他们的拷贝构造和赋值重载