C++之多重继承
来源:互联网 发布:vs2017 golang 编辑:程序博客网 时间:2024/04/28 11:22
当子类继承于多个父类时,有以下两种情况存在,称之为多重继承
// Multi_Inherit.cpp : Defines the entry point for the console application.//多重继承#include "stdafx.h"#include<stdlib.h>#include<iostream>using namespace std;//父类中同名函数如何区分class A {//父类Aprivate:int a;public:A(int i):a(i){}void print(){cout << "父类A: " << a << endl;}};class B//父类B{private:int b;public:B(int j):b(j){}void print(){cout << "父类B: " << b << endl;}};class C :public A, public B{private:int c;public:C(int i,int j,int k):A(i),B(j),c(k){}void get_ab(){A::print();B::print();}};int main(){C x(5, 8, 10);x.get_ab();//子类C中既有父类A中的print()函数,又有父类B的print()函数,所以调用时不知道//调用哪个父类的print()函数//x.print(); //error C2385: ambiguous access of 'print'system("pause"); return 0;}
通过明确指明作用域解析符号进行区分
x.A::print();//指明调用A的print()函数
对于上面右边的图中我们称之为菱形继承
//菱形继承#include "stdafx.h"#include<stdlib.h>#include<iostream>using namespace std;class R//祖先类{private:int r;public:R(int anInt):r(anInt){}void printOn()const{cout << "r = " << r << endl;}};//父类class A :public R{private:int a;//父类A会有一份rpublic:A(int i,int j):R(i),a(j){}};//父类class B :public R{private:int b;//父类B会有一份rpublic:B(int i, int j) :R(i), b(j) {}};//子类class C :public A, public B{private:int c;//子类C会有两份r,一份来自A,一份来自Bpublic:C(int i,int j,int k):A(i,j),B(i,j),c(k){}};int main(){R rr(10);A aa(20, 30);B bb(40, 50);C cc(5, 7, 9);rr.printOn();aa.printOn();bb.printOn();//cc.printOn(); ///error C2385: ambiguous access of 'printOn'system("pause");return 0;}
1 0
- C++之多重继承
- lua 之多重继承
- C++之多重继承
- c++之多重继承
- C++之多重继承
- C++之多重继承
- c++基础之多重继承
- C++继承之多重继承与虚基类
- 第十二周任务二之多重继承
- 未来的.NET之多重继承
- <C++略识>之多重继承、多继承、虚继承
- C++学习之多重继承与虚继承
- C语言之多重累进税额问题
- Lua面向对象之多重继承、私密性详解
- Scala学习笔记13【trait之多重继承、AOP实战】
- C++之多重继承引发的重复调用
- <C++略识>之多重继承、多继承、虚继承的概念.
- 混迹于C++之基类和子类之多重继承(三)
- java 基础运算
- 【SSH网上商城项目实战27】域名空间的申请和项目的部署及发布
- 记录自己有用的链接
- ACM个人模板
- NSNotification
- C++之多重继承
- express框架持久化
- SQL多表查询
- PAT_1015. Reversible Primes
- ACM-NYOJ-算法赛题-喷水装置1
- 蓝桥杯模拟赛-还款计算
- 来谈谈毕业快两年的工作感受
- 字符串全排列
- CSS缩写属性整理