//42dk2j_cpp_c++多继承与虚基类_txwtech-供了解
//多继承与虚继承--实际开发中,尽量不用多继承。java与c#没有多继承,实践证明可以不用多继承。 //--多继承 //--多继承中的二义性问题 //二义性: /*1.当Pegaus飞马,同时继承了Horse和Bird时,Horse和bird都有相同的函数getColor和itsColor. 一个同时继承2个的情况 ***class Pegasus :public Horse, public Bird//多继承 2. 2个继承一个的情况。Horse和bird都继承Animal的年龄,到了飞马Pegasus继承Horse和bird时,那到底继承哪个Animal的age呢? 这种情况就需要用到C++的高级特性,叫虚基类 虚基类专门解决,菱形多继承产生的二义性问题
/* 当class Horse:public Animal //改成虚继承: class Horse :virtual public Animal时,执行时horse就不会构造Animal了。 class Bird :virtual public Animal时,执行时bird就不会构造Animal了。 Pegaus飞马同时继承了Horse和Bird,就会直接构造Animal
--虚基类解决二义性问题 --虚基类的构造函数
java与c#没有多继承 */
//42dk2j_cpp_c++多继承与虚基类_txwtech
//多继承与虚继承--实际开发中,尽量不用多继承。java与c#没有多继承,实践证明可以不用多继承。
//--多继承
//--多继承中的二义性问题
//二义性:
/*1.当Pegaus飞马,同时继承了Horse和Bird时,Horse和bird都有相同的函数getColor和itsColor. 一个同时继承2个的情况
***class Pegasus :public Horse, public Bird//多继承
2. 2个继承一个的情况。Horse和bird都继承Animal的年龄,到了飞马Pegasus继承Horse和bird时,那到底继承哪个Animal的age呢?
这种情况就需要用到C++的高级特性,叫虚基类
虚基类专门解决,菱形多继承产生的二义性问题
/*
当class Horse:public Animal
//改成虚继承:
class Horse :virtual public Animal时,执行时horse就不会构造Animal了。
class Bird :virtual public Animal时,执行时bird就不会构造Animal了。
Pegaus飞马同时继承了Horse和Bird,就会直接构造Animal
--虚基类解决二义性问题
--虚基类的构造函数
java与c#没有多继承 */
#include
using std::cout;
using std::endl;
enum COLOR {Red,Green,Blue,Yellow,White,Black,Brown};
class Animal
{
public:
Animal(int);
virtual ~Animal() { cout
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?