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) ... 
随机推荐
- Comparing Xamarin and Delphi XE5 to Xcode for Cross Platform Mobile App Development
			Comparing Xamarin and Delphi XE5 to Xcode for Cross Platform Mobile App Development If you are consi ... 
- virtual box 安装 centos 7 不能上网问题解决总结
			http://blog.csdn.net/u013264730/article/details/51146359 1.设置virtualbox 网络选项 [root@centos1 ~]# cat / ... 
- R 之 rJava 包安装错误的解决方案
			前几天在Ubuntu上安装R中的xlsx包时一直卡在了rJava包的安装上,最终各种google都没能解决问题.直到最后,我回到了安装rJava时的错误记录....我用血的教训证明,错误日志是很重要很 ... 
- C++常量const
			常量折叠概念 常量折叠表面上的效果和宏替换是一样的,只是“效果上是一样的”,而两者真正的区别在于,宏是字符常量,在预编译宏替换完成后,该宏名字会消失,所有对宏的引用已经全部被替换为它所对应的值,编译器 ... 
- 剑指offer-第五章优化时间和空间效率(两个链表的第一个公共节点)
			思路1:要求的是两个链表的第一个公共节点,首先想到的是用栈来存放两个链表,然后依次从栈中抛出,直到最后一个相同的节点为止.但是要用到两个栈,空间复杂度为O(n): 思路2:从头到尾分别遍历两个链表得到 ... 
- verilog 2001中的一些新语法
			比较有用的:1,generate语句,但需注意,generate-for中变量范围是已知的确定值, generate-case,generate-if语句中变量都必须是固定的, generate必须跟 ... 
- fpga产生伪随机序列
			1,一位模二加法法则:加减法等同于异或,没有进位. 2,将移位寄存器的某几级作为抽头进行模二加法后作为反馈输入,就构成了有反馈的动态移位寄存器.此方法产生的序列是有周期的. 3,假设移位寄存器的级数为 ... 
- computed属性与methods、watched
			一.计算属性 new Vue({ data: { message: 'hello vue.js !' }, computed: { reverseMessage: function () { retu ... 
- 提示“load System.Core failed”
			Could not load file or assembly 'System.Core, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec8 ... 
- Google全球服务器根域名的IP地址
			Google全球服务器根域名的IP地址 目前GOOGLE正与ZF继续谈判,此谈判结果将直接影响该公司在中国的存在此前,由于曾出现Google服务器被墙,而致使众网友只能FQ搜索的窘境而目前尚不知道若G ... 
