c++ 子类父类构造函数

 

http://tieba.baidu.com/f?kz=1167962877 

1楼

这两天一直搞不明白C++继承的构造函数该怎么写。现在经过实验,总结出了一些观点。欢迎大家批评指正。
在继承中,
一,父类没有写出构造函数,
子类的构造函数可以写成“任何”形式而不用顾及父类的构造函数。
例如:父类为CA,子类为CB,父类中没有写出任何构造函数,则子类中可以不写构造函数,或者构造函数可以写成以下几种:
CB(){};
CB():CA(){};
CB(int a, int b){};
CB(int a, int b):CA(){};
这几种形式都可以。即完全忽略父类的构造函数。
二,父类只写出了一个无参构造函数。
则子类可以不写构造函数,或者写成以下几种。
CB(){};
CB():CA(){};
CB(int a, int b){};
CB(int a, int b):CA(){};
即当父类只写出一个无参构造函数或者没有写构造函数效果是一样的。
三,父类只写出了一个有参构造函数
此时,子类应该“标准”地写出构造函数,例如
CA(int a, int b){};
CB(int a, int b):CA(a,b){};
或者:
CA(int a, int b){};
CB(int a, int b ,int c):CA(a,b){};
四,父类有多个有参构造函数,
此时,子类最少实现一个父类的构造函数即可。
五,父类有多个有参函数和一个无参构造函数。
此时,子类只需实现一个父类的构造函数即可,不管子类实现的是有参构造函数还是无参构造函数。
这时候应该注意,即使子类写成CB(){};也是正确的,说明父类的无参构造函数可以忽略。甚至写成CB(int a, int b){};也是正确的。
总结以上几条可以归纳出C++子类继承父类时构造函数的写法的规律为:
1,当父类有显式写出的构造函数时,子类最低限度的实现父类中的一个。
2,当父类没有显式写出构造函数时,子类可以不写构造函数或者“自由”书写构造函数。
更为普遍的规律总结如下:子类的构造函数以最少满足父类的一个构造函数为准。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值