C++ 继承时的构造函数

微信公众号CodingRush

分享编程、算法、机器学习、数据挖掘、推荐系统、大数据计算框架等知识,欢迎扫码关注。
微信公众号CodingRush,分享编程、算法、机器学习、数据挖掘、推荐系统、大数据计算框架等知识,欢迎扫码关注。

子类继承了哪些东西?

子类在继承父类的时候,父类的public成员变量和成员方法被子类所继承。但是父类的构造函数并没有被继承,其实想想也就知道因为本来子类和父类就是不同名字的,而构造函数和类同名,所以构造函数是没有办法继承的。

子类构造原则

因为父类构造函数并没有被继承,因此在创建子类对象时,需要初始化父类的成员,也就是说需要调用父类的构造函数。
另外我们知道C++编译器会自动做很多事情,比如说如果你没有定义构造函数,编译器会生成默认构造函数。如果在子类构造函数中没有显示调用父类构造函数,那么系统会默认调用父类的无参构造函数。。。
那么在不同的情况下,子类的构造遵从如下的原则

  1. 若子类么有定义构造函数,那么编译器自动生成默认构造函数,并且在构造子类时自动调用父类的无参构造函数。
  2. 若子类自定义了构造函数,但没有显示的调用父类构造函数,那么在构造子类对象时,首先调用父类的无参构造函数,然后调用子类自己的构造函数。
  3. 若子类定义了构造函数,并且显示调用了父类的构造函数,那么则先调用父类指定的构造函数,然后调用子类的构造函数。

注意一些可能会出问题的情况,其中一个情况就是如果类中没有定义构造函数,那么编译器是会生成默认构造函数的;如果用户自己定义了任何一种构造函数,那么编译器将不会生成默认构造函数。

调用父类构造函数

调用父类构造函数的方式,有点类似于初始化成员列表,在定义子类构造函数时,使用“:”后调用父类构造函数。

参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值