C++程序,写出输出结果

如题所述

#include <iostream>
using namespace std;

class based
{
public:
    int func() { return 1;}
};

class drived:public based
{
    int func() { return 10;}
};

void main()
{
    drived d;
    based b=d;
    cout << b.func() << endl;
    cout << b.based::func() << endl;
}

因为代码不全,我补充了部分代码;

从这儿可以看出,如果调用子类的func(),输出10,如果调用基类的func(),输出1。


b是基类对象,然后将子类对象直接赋值给基类对象。

尽管变量的内容是子类,但变量类型仍旧是基类,所以无论是调用b.func()还是b.based::func(),本质上调用的仍旧是基类的func(),输出是2个1。

我将函数func()修改成虚函数,2个输出仍旧全是1。

只有涉及对象指针,才牵扯到虚函数的问题。


如果满意,欢迎采纳我的解答,谢谢。

欢迎追问。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-07-08
是虚函数还是同名函数啊?给个清楚的图
第2个回答  2014-07-08
输入基类结果,看不见。
相似回答