c++之继承与派生
2024-08-29 08:15:12
再来回顾下继承派生的语法。
继承方式显示有三种(public, protected, privatez),隐式默认private。所谓继承方式,是指派生类对基类成员的访问权限控制。
派生类构造函数定义的一般格式如下:
派生类名(参数总表):基类名1(参数表1),...,基类名m(参数表m),
成员对象名1(成员对象参数表1),...,成员对象名n(成员对象参数表n)
{
派生类新增成员的初始化;
}
构造函数调用次序:
.调用基类构造函数
.调用内嵌成员对象的构造函数
.派生类自己的构造函数
示例:
#include <iostream>
using namespace std; class A {
private:
int l1, l2;
public:
A(int l1 = , int l2 = ) :l1(l1), l2(l2) {}
void show() {
cout << "I'm A." << endl;
}
};
class B {
private:
int lv1, l2;
public:
B(int lv1 = , int l2 = ) :lv1(lv1), l2(l2) {}
void show() {
cout << "I'm B." << endl;
}
};
class C: public A, public B{
private:
int lv1, lv2;
A ta;
public:
C(int r1, int r2, int r3, int r4, int r5, int r6, int r7, int r8) :A(r1, r2), B(r3, r4), ta(r5, r6) {
this->lv1 = r7;
this->lv2 = r8;
}
void show() {
cout << "I'm C." << endl;
A::show();
B::show();
}
}; int main() {
C tc(, , , , , , , );
tc.show();
return ;
}
假若多个基类拥有相同名称的成员x,而此时派生类去调用x,系统无法判断去调哪个基类的x,由此产生二义性。解决方式可以是成员名限定(eg:A::show();)或者成员重定义(同名覆盖,如上例的C::show())。
最新文章
- 【JavaScript】ArtTemplate个人的使用体验。
- js日期计算及快速获取周、月、季度起止日,获取指定日期周数以及星期几的小例子
- has_many :through VS has_and_belongs_to_many
- C语言 百炼成钢14
- 安装PL/SQL Developer 遇到的问题及解决方法
- [C# 基础知识系列]专题一:深入解析委托——C#中为什么要引入委托
- Json之语法,格式
- Linux下配置VNC
- hdu1002
- javascipt : reduce
- 记一次使用Node.js electron打包网站的记录
- 自制Linux重命名命令
- Android的Context Manager(服务管理器)源码剖析-android学习之旅(99)
- java equals和tostring
- vue的登陆验证及返回登录前页面实现
- KMP替代算法——字符串Hash
- 关于windows 7 安装Django和基本使用命令
- AHOI中国象棋(dp)
- linux下的C语言程序设计
- 大数据系列之分布式计算批处理引擎MapReduce实践-排序