| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 490 人关注过本帖
标题:请教关于虚继承的问题
只看楼主 加入收藏
wenxinwukui
Rank: 1
等 级:新手上路
帖 子:22
专家分:6
注 册:2010-11-15
收藏
 问题点数:0 回复次数:2 
请教关于虚继承的问题
请看一下下面这个程序:
class Top{
public:
    virtual ~Top(){}
};

class Left : virtual public Top {
public:
    void f(){}
};

class Right : virtual public Top{
public:
    void g(){}
};

class Bottom : public Left, public Right{};

想请教各位一下,在继承中加上virtua 和不加有什么区别:也就是对于上例子中,如果只关心Left这个类,那么它和
class Left : public Top{
    ...
}
有没有区别啊?
搜索更多相关主题的帖子: 继承 
2010-12-03 10:38
lintaoyn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:606
专家分:2499
注 册:2009-4-8
收藏
得分:0 
对Left 类的使用者并没有什么区别。但是在多重继承时就会有区别,就对Bottom为说只有一个Top。无论是通过Left还是Right和Bottom里的成员函数来修改Top里的数据成员,都对针对一份Top对象的拷贝。
用词有些错误,但大致能表达一些你想知道的。

迭代的是人,递归的是神。
2010-12-03 16:12
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
你的问题是菱形继承问题   把菱形的上定点类声明为虚基类

那么 top类中的数据成员只能被继承一次  所以left类和right类只有一个有top类的成员

那么button类虽然是多继承  但只有一份top类的拷贝

                                         
===========深入<----------------->浅出============
2010-12-03 18:46
快速回复:请教关于虚继承的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.056360 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved