注册 登录
编程论坛 C++教室

继承中 子类类成员是父类对象问题 可否消除父类的父类的构造显示 代码如下

haoyasen 发布于 2013-06-04 08:31, 601 次点击
/*
规划合适的类体现,设计实现对头部(Head)类型的管理,包括对眼睛(Eye),鼻子(Nose),耳朵(Ear),口(Mouth)的设计和管理。
*/
#include<iostream>
using namespace std;
class COrgan{
public:
    COrgan()
    {
        cout<<"COrgan display!!!"<<endl;
    }
};
class CEye:public virtual COrgan{
public:
    CEye()
    {
        cout<<"CEye display!!!"<<endl;
    }
};
class CNose:public virtual COrgan{
public:
    CNose()
    {
        cout<<"CNose display!!!"<<endl;
    }
};
class CMouth:public virtual COrgan{
public:
    CMouth()
    {
        cout<<"CMouth display!!!"<<endl;
    }
};
class CHead:public CEye ,public CNose ,public CMouth {
CEye eye_;
CNose nose_;
CMouth mouth_;//有他无他的区别
public:
    CHead()
    {
        cout<<"CHead display!!!"<<endl;
    }
};
void main()
{
    CHead head;
}

代码运行结果:

COrgan display!!!
CEye display!!!
CNose display!!!
CMouth display!!!
COrgan display!!!//可否消除这个啊,或减少
CEye display!!!
COrgan display!!!//可否消除这个啊,或减少
CNose display!!!
COrgan display!!!//可否消除这个啊,或减少
CMouth display!!!
CHead display!!!
请按任意键继续. . .
3 回复
#2
haoyasen2013-06-04 08:33
今天 突发奇想  这个 是否可实现 有无意义呢  柜等解释
#3
rjsp2013-06-04 08:50
eye_的COrgan,nose_的COrgan,mouth_的COrgan 三者之间并无任何关系,为什么要“消除”?
如同别人吃了晚饭,你就不需要吃了?

假设 class COrgan 中有个成员叫 int val
我希望eye_的COrgan::val赋值1,mouth_的COrgan::val赋值2
但如果你“可否消除这个啊,或减少”梦想成功,只存在一个COrgan::val,那1存在哪里,2存在哪里?
#4
haoyasen2013-06-04 08:55
回复 3楼 rjsp
前一段明白了 恩恩  知道了 有点 不经大脑了
1