注册 登录
编程论坛 C++教室

测试你的c++水平

yinlb1987 发布于 2008-04-28 17:03, 2058 次点击
#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();
}
这段程序结果应该是多少?
16 回复
#2
sunkaidong2008-04-28 17:11
一般是这样玩的
#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
newyj2008-04-28 17:19
c2.call();调用的是a::call()函数
call()函数调用prit()函数 那这个函数为什么是b中的prit()函数 不是a中的
就是因为把c2声明为b的原因吗
#4
娇里娇气2008-04-29 15:28
深奥
#5
smdszgzh2008-04-29 16:19
因为a里面的prit()是虚函数,而已b是a的子类,b里对prit()进行了重写,肯定会调用子类里的函数!MFC不是总用子类重写父类的虚函数来实现你想要的功能的嘛~
#6
flyingcloude2008-04-30 12:05
嘿嘿,这个貌似还是看懂的拉
#7
zhanghj2008-04-30 19:21
那答案是什么啊???
#8
fhb132008-04-30 21:52
答案:
class b
#9
linwu_20062008-05-01 19:22
长见识了...
#10
PcrazyC2008-05-01 22:25
派生类函数覆盖基类函数
#11
sskicgah2008-05-01 23:03
还没学到那里还得研究研究
#12
lkz2776309642008-05-02 13:41
学习中,吸收你的识知
#13
zy4399582008-05-02 18:44
学习ING
#14
战士2008-05-04 02:23
找工作中ING
#15
jianfeng2008-05-04 15:20
这个问题摆出来....


初学者?
#16
jiangjieqim2008-05-04 19:48
#17
lsm_19862008-05-04 20:25
这个怎么编译不了??
#warning This file includes at least one deprecated or antiquated header.
为什么会提示这个??
1