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


[ 本帖最后由 yuccn 于 2011-3-25 21:55 编辑 ]
搜索更多相关主题的帖子: 虚函数 答案 
2011-03-25 21:53
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6814
专家分:42393
注 册:2010-12-16
收藏
得分:0 
楼上增加了一个输出,想增加的知识点是什么?
只是在派生类多输出了一条基类的信息,还有时间一个默认参数,没有什么知识点的增加吧。这不属于面向对象的内容。

如果说有知识点的增加,请赐教

[ 本帖最后由 yuccn 于 2011-3-26 13:10 编辑 ]

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2011-03-26 13:04
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6814
专家分:42393
注 册:2010-12-16
收藏
得分:0 
应该来总结下帖子了
例子的输出为:
Derive - print
Base - print

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

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


我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2011-03-29 21:52
快速回复:考考大家对虚函数的理解
数据加载中...
 
   



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

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