今天没事看了下C++的构造函数原则,顺便做个笔记,毕竟好记性不如烂笔头,废话不多说,直奔主题了了。
C++构造函数原则归结起来有下面的几条:
1、如果子类没有定义构造函数,则子类默认调用父类无参数的构造函数。
2、如果子类定义了构造函数,不管子类的构造函数是有参数还是没有参数的,在创建子类时,没有显示调用父类的构造函数,则首先调用父类的无参的构造函数,在调用子类自己的构造函数。
3、在创建子类的时候,如果子类没有显示调用父类的构造函数,父类定义了自己无参数的构函数,这时会首先调用父类无参的构造函数。
4、在创建子类对象时,如果子类没有显示调用父类的构造函数,且父类仅仅定义了有参数的构造函数,则会报错。正确的方法是子类必须显示调用父类的有参数的构造函数,
5、在创建子类对象时,如果子类显示调用了父类的构造函数,此时子类必须使用初始化类表来初始化父类构造函数。
以上,归结起来就是子类必须先调用父类的构造函数,再调用自己的构造函数。