设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 883|回复: 9
打印 上一主题 下一主题

测试你的c++水平

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-4 00:30:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <iostream.h>
class a
{
public:
    a(){}
    virtual void prit();
    void call();

};
void a::prit()
{
    cout<<"class a"<<endl;

}
void a::call()
{
    prit();
}
class b:public a
{
public:
    b(){}
    virtual void prit();
    void test();
};
void b::prit()
{
    cout<<"class b"<<endl;
}
void b::test()
{
    a::prit();
}
void main()
{

    a c1;
    b c2;
    //call()
    c2.call();
}
这段程序结果应该是多少?
2#
发表于 2009-11-4 00:30:29 | 只看该作者
#include <iostream.h>
class a
{
public:
    a(){}
    virtual void prit()=0;
    void call();

};
void a::prit()
{
    cout<<"class a"<<endl;

}
void a::call()
{
    prit();
}
class b:public a
{
public:
    b(){}
    void prit();
    void test();
};
void b::prit()
{
    cout<<"class b"<<endl;
}
void b::test()
{
    a::prit();
}
void main()
{

  
    b c2;
    a &c1=c2;
    c1.call();
   
}
回复 支持 反对

使用道具 举报

3#
发表于 2009-11-4 00:30:29 | 只看该作者
c2.call();调用的是a::call()函数
call()函数调用prit()函数 那这个函数为什么是b中的prit()函数 不是a中的
就是因为把c2声明为b的原因吗
回复 支持 反对

使用道具 举报

4#
发表于 2009-11-4 00:30:30 | 只看该作者
深奥
回复 支持 反对

使用道具 举报

5#
发表于 2009-11-4 00:30:31 | 只看该作者
因为a里面的prit()是虚函数,而已b是a的子类,b里对prit()进行了重写,肯定会调用子类里的函数!MFC不是总用子类重写父类的虚函数来实现你想要的功能的嘛~
回复 支持 反对

使用道具 举报

6#
发表于 2009-11-4 00:30:32 | 只看该作者
嘿嘿,这个貌似还是看懂的拉
回复 支持 反对

使用道具 举报

7#
发表于 2009-11-4 00:30:33 | 只看该作者
那答案是什么啊???
回复 支持 反对

使用道具 举报

8#
发表于 2009-11-4 00:30:34 | 只看该作者
答案:
class b
回复 支持 反对

使用道具 举报

9#
发表于 2009-11-4 00:30:37 | 只看该作者
长见识了...
回复 支持 反对

使用道具 举报

10#
发表于 2009-11-4 00:30:38 | 只看该作者
派生类函数覆盖基类函数
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 21:38 , Processed in 0.073863 second(s), 9 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表