【发布时间】:2014-09-03 22:35:45
【问题描述】:
我想知道为什么这个c++程序的输出是X:f1?是否调用了 y 对象,调用 Y 的 f1() 是否合乎逻辑?不应该继承吗?我很困惑...
class X {
public:
void f1() { cout<<"X:f1"<<endl;}
};
class Y : public X {
public:
void f1() { cout<<"Y:f1"<<endl;}
};
Y* y = new Y();
void f(X* x) { x -> f1(); }
int main () { f (y);
system("pause");
return 1;
}
以及如何更改 f() 函数的主体和在输出中获取 Y:f1 所需的参数?
【问题讨论】:
-
将函数
f1()声明为virtual -
如果您来自 Java、Python 等所有实例方法都是虚拟的语言,那么您应该阅读它们。
标签: c++ function inheritance