美文网首页
C++学习第13课,多继承

C++学习第13课,多继承

作者: Mr小熊_1da7 | 来源:发表于2019-06-16 18:00 被阅读0次

1 类的多继承

class Sofabed : public Sofa,public Bed 

两个都是公有继承,如果不写默认为私有继承。

2 产生了二义性

如上,Sofa 和Bed,如果都有weight变量。

使用s.getWeight();/*error 二意性,引入虚拟继承*/

可以使用

s.Sofa::getWeight();

s.Bed::getWeight();

来区分,不过这样有点麻烦。

3 虚拟继承

1 先定义一个家具类


class Furniture {

private:

int weight;

public:

void setWeight(int weight) { this->weight = weight;}

int getWeight(void) {return this->weight;}

}

2 床和沙发都虚拟继承这个家具

class Sofa : virtual public Furniture{

private:

int a;

public:

void watchTV(void) { cout<<"watch TV"<<endl;}

};

class Bed : virtual public Furniture{

private:

int b;

public:

void sleep(void) {cout<<"sleep"<<endl;}

};

3  沙发床多继承这沙发和床

class Sofabed : public Sofa,public Bed {

private:

int c;

};

结论:虚继承时,共同的虚父类会存在于同个空间。

相关文章

  • Java 基础 - 继承

    参考 C++多继承有什么坏处,Java的接口为什么可以摈弃这些坏处?C++多继承(钻石继承)的问题和解决C++继承...

  • C++学习第13课,多继承

    1 类的多继承 class Sofabed : public Sofa,public Bed 两个都是公有继承,如...

  • Java基础

    Java 语言有哪些特点? 1.简单性:Java语言继承了C++语言的优点,去掉了C++中学习起来比较难的多继承、...

  • 慕课网-C++远征之继承篇(下)-学习笔记

    C++远征之继承篇(下) 多继承与多重继承 多重继承: 多继承: 如果不写,那么系统默认为private继承 多重...

  • 网易问题总结

    1. C++语言问题 1. Java用接口代替C++中多继承,有什么优势? 避免像C++那样出现多继承而导致的关系...

  • JNI基础 -- C++基础知识(继承多态,虚函数 )

    继承 在Java中类的继承只能是单继承,但是在C++中可以多继承。继承是通过一个冒号表示的,如下: C++中的继承...

  • 2020-02-17-C++虚继承机制

    C++ 中出现多继承,当多继承就会出现 两个父类的复制,这样就出现了虚继承机制。 A 继承 ZB继承 ZC 继承 ...

  • oc不用多继承的思考

    runtime使用isa继承链发送消息,多继承的话isa就成了多维数组了。结合c++的多继承原理对比

  • C++——继承方式,多继承

    一、继承方式 1.1 overload和shadow的区别 shadow: 父子类中,只要函数名相同,就会造成sh...

  • C++虚继承的内存布局

    C++的继承主要分几种: A:单继承,除了C++的所有OO语言基本都是单根了 B:散状多继承,这个也比较好理解,基...

网友评论

      本文标题:C++学习第13课,多继承

      本文链接:https://www.haomeiwen.com/subject/jjcefctx.html