c++之继承与派生
再来回顾下继承派生的语法。
继承方式显示有三种(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())。
c++之继承与派生的更多相关文章
- c++学习--继承与派生
继承和派生 1 含有对象成员(子对象)的派生类的构造函数,定义派生类对象成员时,构造函数的执行顺序如下: 1 调用基类的构造函数,对基类数据成员初始化: 2 调用对象成员的构造函数,对对象成员的数据成 ...
- 不可或缺 Windows Native (21) - C++: 继承, 组合, 派生类的构造函数和析构函数, 基类与派生类的转换, 子对象的实例化, 基类成员的隐藏(派生类成员覆盖基类成员)
[源码下载] 不可或缺 Windows Native (21) - C++: 继承, 组合, 派生类的构造函数和析构函数, 基类与派生类的转换, 子对象的实例化, 基类成员的隐藏(派生类成员覆盖基类成 ...
- [C++]类的继承与派生
继承性是面向对象程序设计的第二大特性,它允许在既有类的基础上创建新类,新类可以继承既有类的数据成员和成员函数,可以添加自己特有的数据成员和成员函数,还可以对既有类中的成员函数重新定义.利用类的继承和派 ...
- O-c中类的继承与派生的概念
什么是继承 众所周知,面向对象的编程语言具有: 抽象性, 封装性, 继承性, 以及多态性 的特征. 那么什么是继承呢? 传统意义上是指从父辈那里获得父辈留下的东西 在开发中, 继承就是"复用 ...
- 程序设计实习MOOC / 继承和派生——编程作业 第五周程序填空题1
描述 写一个MyString 类,使得下面程序的输出结果是: 1. abcd-efgh-abcd- 2. abcd- 3. 4. abcd-efgh- 5. efgh- 6. c 7. abcd- 8 ...
- 走进C++程序世界------继承和派生
继承和派生 继承是面向对象编程语言的最重要方面之一,正确的使用继承可编写出设计良好,容易于维护和扩展的应用程序.下面是在其他博客中的总结: ****************************** ...
- C++学习之路—继承与派生(一):基本概念与基类成员的访问属性
(本文根据<c++程序设计>(谭浩强)总结而成,整理者:华科小涛@http://www.cnblogs.com/hust-ghtao,转载请注明) 1 基本思想与概念 在传统的程序设计 ...
- C/C++基础知识总结——继承与派生
1. 类的继承与派生 1.1 派生类的定义 (1) 定义规范 class 派生类名: 继承方式 基类1名, 继承方式 基类2名... { ...派生类成员声明; }; (2) 从以上形式上看可以多继承 ...
- python基础——继承与派生、组合
python基础--继承与派生 1 什么是继承: 继承是一种创建新的类的方式,在python中,新建的类可以继承自一个或者多个父类,原始类成为基类或超累,新建的类成为派生类或子类 1.1 继承分为:单 ...
- 【C++ 实验六 继承与派生】
实验内容 1. 某计算机硬件系统,为了实现特定的功能,在某个子模块设计了 ABC 三款芯片用于 数字计算.各个芯片的计算功能如下: A 芯片:计算两位整数的加法(m+n).计算两位整数的减法(m-n) ...
随机推荐
- Leetcode 890. Find and Replace Pattern
把pattern映射到数字,也就是把pattern标准化. 比如abb和cdd如果都能标准化为011,那么就是同构的. class Solution: def findAndReplacePatter ...
- I.MX6 change boot partition 1 to User area
/************************************************************************************ * I.MX6 change ...
- 【ACM非算法部分】scanf()函数
scanf函数 格式说明符: %c 字符型 %d 十进制数 %i 读入十进制,八进制,十六进制数.输入的时候正常是十进制数,若输入0前缀的数将读入八进制,0x前缀读入16进制.若输 ...
- Mapreduce shuffle和排序
Mapreduce为了确保每个reducer的输入都按键排序.系统执行排序的过程-----将map的输出作为输入传给reducer 称为shuffle.学习shuffle是如何工作的有助于我们理解ma ...
- 51nod 1298 圆与三角形
给出圆的圆心和半径,以及三角形的三个顶点,问圆同三角形是否相交.相交输出"Yes",否则输出"No".(三角形的面积大于0). 输入 第1行:一个数 ...
- 剑指Offer-第一章面试细节总结
面试细节:行为面试(20%)+技术面试(70%)+应聘者提问(10%) * 行为面试:跳槽者(不要抱怨老板,不要抱怨同事,只为追寻自己的理想而站斗) * 技术面试:1.基础知识点(编程语言,数据结构( ...
- IQ/OQ/DQ/PQ
Installation Qualification (IQ) 安装验证,安装时在用户处进行.它提供文件证明用户安装环境所有的规格及参数完全符合制造商的描述和安全 要求. Operation Qual ...
- gerrit简版教程
设置public key 1.生成密钥:ssh-keygen -t rsa -C "xiaoming" 2.查看是否已经有了ssh密钥:cd ~/.ssh 3.不知道为什么hook ...
- numpy之通用函数ufunc
通用函数-元素级数组函数 通用函数(ufunc)是一种对ndarray执行元素级运算的函数. 一元ufunc import numpy as np arr = np.arange(-10,10,2) ...
- [Client] looks like we got no XML document in....
无wsdl方式应用webservice时,服务端包含了 include_once'inc/utility_all.php '一直报[Client] looks like we got no XML d ...