C++ 子类继承带参的父类构造函数应该怎么写
来源:互联网 发布:b21轰炸机 知乎 编辑:程序博客网 时间:2024/04/30 03:12
参考:http://tieba.baidu.com/p/1167962877
一,父类没有写出构造函数,
子类的构造函数可以写成“任何”形式而不用顾及父类的构造函数。
例如:父类为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,当父类没有显式写出构造函数时,子类可以不写构造函数或者“自由”书写构造函数。
更为普遍的规律总结如下:子类的构造函数以最少满足父类的一个构造函数为准。
- C++ 子类继承带参的父类构造函数应该怎么写
- C++ 子类继承带参的父类构造函数应该怎么写
- [Unity&C#&继承]unity怎么改变继承子类的父类的函数
- A 子类继承父类,子类的构造函数会覆盖父类的构造函数
- 子类,父类默认构造函数及带参构造函数的调用
- 在C 中子类继承和调用父类的构造函数方法
- C++类继承:子类调用父类的构造函数
- 子类继承父类的构造函数(方法)吗?
- 子类继承父类的构造函数(方法)吗?
- 关于子类继承父类的构造函数用法
- 继承(子类与父类构造函数的关系)
- 子类继承父类,构造函数的特点 super()
- JAVA 子类不能继承父类的构造函数
- 继承-父类子类构造函数的运行顺序
- 关于PHP中构造函数以及子类继承父类构造函数的相关问题
- 子类继承父类的构造方法
- 子类继承父类,那么子类实例化时对象调用的是父类还是子类的构造函数?
- Java里子类调用父类构造方法把父类的内容继承怎么做?
- 2016最新4套旅游网站建站程序系统优缺点分析
- 不惑JAVA之JAVA基础 - 锁 -synchronized、Lock解析
- uva 357 Let Me Count The Ways
- Python的编码注释# -*- coding:utf-8 -*- (即在py中写中文)
- Android进阶之Fragment和Activity之间通过setArguments传递复杂参数
- C++ 子类继承带参的父类构造函数应该怎么写
- SpringBoot集成Swagger
- springMVC中web.xml配置解析
- tornado系列:用cookie进行用户验证
- Java集合内部元素的排序
- 在Eclipse中配置Maven
- Thrift 原理与使用实例
- goto 语句和标号
- 微信支付开发-从零开始-Part2