| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 840 人关注过本帖
标题:考考大家对虚函数的理解
只看楼主 加入收藏
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
结帖率:99.13%
收藏
已结贴  问题点数:20 回复次数:7 
考考大家对虚函数的理解
大家先认真想想下面程序输出是什么,再把程序运行一下。
如果答案和你想到的不一样,哪么要认真学习补下基础了。如果和你想到的答案一样,并且明白为什么,哪么你的功底还不错的。^_^
其实题目也很简单,只是大意就很容易出错。(注意,对面向对象理解不够可能导致你做对这题目)
///////////////////////////////////
class Base
{
public:
    Base(){}
    ~Base()
   {
        print();
    }

    virtual void print()
    {
        cout<<"Base - print"<<endl;
    }
};

class Derive : public Base
{
public:
    Derive(){}
    ~Derive(){}
    virtual void print()
   {
        cout<<"Derive - print"<<endl;
    }
};

void OutPrint(Base *pObj)
{
    pObj->print();
}

void main()
{
    Derive Obj;
    OutPrint(&Obj);   
}
////////////////////////////////////
有什么好的题目,希望网友拿出来分享o(∩_∩)o...
搜索更多相关主题的帖子: 答案 虚函数 
2011-03-25 21:57
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:10 
不太懂!

   唯实惟新 至诚致志
2011-03-25 23:11
lixingkai0
Rank: 2
等 级:论坛游民
帖 子:11
专家分:10
注 册:2008-8-9
收藏
得分:10 
请楼主讲解一下,按照main函数定义的对象Derive Obj;
按照隐藏这条规则应该只执行cout<<"Derive - print"<<endl;
为什么两条都执行??
2011-03-26 09:20
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
回lixingkai0:你大意了。输出两条是肯定的,你没有看到基类析构的时候有个输出吗?呵呵。

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2011-03-26 10:59
Pirelo
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:118
专家分:550
注 册:2011-1-28
收藏
得分:0 
Derive - print //派生类虚函数
Base - print //基类虚函数
Base - print //基类析构函数

是上面的吗??
2011-03-29 15:39
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
应该来总结下帖子了
例子的输出为:
Derive - print
Base - print

第一个输出是 pObj->print();因为虚函数的动态绑定,而调用了派生类的接口。

第二个输出,是在析构基类的时候,或许读者会迷惑,为什么析构基类没有调用了动态绑定的接口。这个就涉及到一个c++的很基础的知识了。因为pObj析构的时候,先是派生类的析构,再到基类的析构。再析构基类的时候,派生类已经析构完成了。故在析构基类的时候还想调用动态绑定的接口是不可以了的(因为派生类已经析构了),故调用了基类的接口。

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2011-04-01 09:29
songhuirong1
Rank: 2
等 级:论坛游民
帖 子:116
专家分:38
注 册:2010-6-15
收藏
得分:0 
哈哈。我的结果跟lz的是一样的。
2011-04-01 22:11
westerngoat
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-5-29
收藏
得分:0 
有点意思维?
2011-04-04 15:24
快速回复:考考大家对虚函数的理解
数据加载中...
 
   



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

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