更正后程序的输出应该是:
MyClassB::show()
MyClassB::show()
[程序]
#include
#include
using namespace std;
class MyClassA{ // 基类
public:
MyClassA()
{
strcpy(str,"MyClassA::show()");
}
//ERROR**********found**********
void show()const
{
cout<<str<<endl;
}
private:
char str[100];
};
class MyClassB:public MyClassA{ // 派生类
public:
MyClassB()
{
strcpy(s,"MyClassB::show()");
}
void show()const
{
cout<<s<<endl;
}
private:
char s[100];
};
//ERRORfound
void fun(MyClassA t)
{
t.show();
}
int main()
{
MyClassB tb;
fun(tb);
MyClassA *ta=&tb;
//ERROR**********found**********
ta.show(); // 通过ta调用show()
system("pause");
return 0;
}
正确答案:
第一空:
virtual void show()const;void virtual show()const
第二空:
void fun(MyClassA & t)
第三空:
ta->show();