构造函数的调用规则

1.当类中没有定义任何一个构造函数(包括拷贝构造函数)时,c++编译器会提供一个默认的无参构造函数和默认拷贝构造函数;

2.当类中定义了拷贝构造函数时,c++编译器不会提供默认的无参构造函数;(拷贝构造函数也是构造函数,它的函数名和默认的无参构造函数是同名的,这时候你必须得自己写一个构造函数来初始化对象)

3.当类中定义了任意的非拷贝构造函数(即有参构造函数或无参构造函数),c++编译器不会提供默认的无参构造函数;

4.默认拷贝构造函数对成员变量简单赋值;

结论:1.在定义类时,只要你在类里面写了构造函数(包括拷贝构造函数),c++编译器就不会再给你提供默认的无参构造函数了,你必须用自己写的构造函数去初始化对象;

           2.在定义类时,如果你没写拷贝构造函数,c++编译器能给你提供一个默认的拷贝构造函数。

原文地址:https://www.cnblogs.com/jswu-ustc/p/8331225.html