您的位置:首页 > 编程语言 > C语言/C++

c++多继承机制

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

#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:我的第一篇博文。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: