c++多继承机制

来源:互联网 发布:淘宝要怎么运营 编辑:程序博客网 时间:2024/06/14 18:21

    由于两义性问题的根源在公共基类,因此需要从公共基类着手,将公共基类说明为虚基类,就可以避免二义性。代码如下:


#include<iostream>
using namespace std;


class human
{


public:
void speak(){cout<<"人类可以说话"<<endl;}
};


class father : virtual public human
{


public:
void stand(){cout<<"父亲可以站立"<<endl;}
};


class mother : virtual public human
{


public:
void clean(){cout<<"母亲可以洗衣服"<<endl;}
};


class son : public father ,public mother
{


public:
void school(){cout<<"孩子还在上学"<<endl;}




};


int main()
{
son Tom;
Tom.stand();
father *fp = NULL;
fp = new son;
fp->speak();
//fp->school(); 

/*son *Fs = NULL;
Fs = new father;*/

/*用基类指针指向一个派生类对象时,由于派生类对象也是基类的对象,因此这种指向是安全的,但只能访问基类所

拥有的成员*/


return 0;
}


注意:一、father 和mother在继承时将human说明为虚基类,也就是只为子类son生成一个speak函数,speak函数是惟一的,避免了二义性。

二、派生类指针不能直接指向基类对象。

三、派生类指针必须强制转换成基类指针后才可指向基类。


谢谢大家!祝大家心情愉快。

PS:我的第一篇博文。



原创粉丝点击