| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1155 人关注过本帖
标题:请教,在中间类中定义一个空的虚函数起什么作用?最好能举例说明,感谢!
只看楼主 加入收藏
全世界安静
Rank: 2
等 级:论坛游民
帖 子:104
专家分:65
注 册:2012-6-4
结帖率:31.58%
收藏
 问题点数:0 回复次数:7 
请教,在中间类中定义一个空的虚函数起什么作用?最好能举例说明,感谢!
如题!
搜索更多相关主题的帖子: 虚函数 最好 
2012-06-16 10:30
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
你举个情况我们分析分析?
2012-06-16 11:18
全世界安静
Rank: 2
等 级:论坛游民
帖 子:104
专家分:65
注 册:2012-6-4
收藏
得分:0 
回复 2楼 pangding
class A()
{
public:
 virtual void show()
    {
      cout<<"FUCK!"<<endl;
    }
};
class B : public A
{
public:
  virtual void show()
    {
    }
} ;
class C: public B
{
};
书上说,声明空的虚函数是为了保证B的派生类能使用类A的虚函数界面,使调用c->show()能沿着从A对象的虚函数路径正确存取C::show()虚函数。
不理解
2012-06-16 11:33
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
根本没这个必要,初始化虚函数表的时候,会把重定义后的虚函数的地址覆盖掉上一级的地址。
程序代码:
#include <iostream>
using namespace std;

class A {
public:
    virtual void print()
    {
        cout << "A" << endl;
    }
};

class B : public A {};
class C : public B {
public:
    void print()
    {
        cout << "C" << endl;
    }
};

int main()
{
    C c;
    static_cast<A&>(c).print();
}
输出:
C

My life is brilliant
2012-06-16 12:54
全世界安静
Rank: 2
等 级:论坛游民
帖 子:104
专家分:65
注 册:2012-6-4
收藏
得分:0 
空的虚函数一般在什么情况下使用?起什么作用?
2012-06-16 13:17
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
回复 5楼 全世界安静
不能说什么空的虚函数,应该说没有重定义该方法,既然没有重定义就用基类的呗。

My life is brilliant
2012-06-16 19:36
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
刚看帖的时候我以为楼主问的是基类里的虚函数有什么用。刚要答就发现其实问的是中间类的,想了想没什么出有什么作用。
看来 lz1091914999 也这么认为。我表示他的回答一般都很专业,楼主可以完全采纳。
2012-06-16 21:02
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
回复 7楼 pangding
额,其实我也正在学习C++呢,只是个人意见而已,而且不要说我专业,因为我不是专家。呵呵

My life is brilliant
2012-06-16 22:01
快速回复:请教,在中间类中定义一个空的虚函数起什么作用?最好能举例说明,感谢 ...
数据加载中...
 
   



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

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