<分区>
我有以下返回“YXX”的代码。
我想知道为什么第二个打印显示“X”,而关键字 virtual
用于 X 类。所以行 tab[0] = y1
将 tab[0] 设置为 Y 对象并显示 'Y' 由于虚拟方法不是吗?
#include <iostream>
class X {
public: virtual void f() const { std::cout << "X"; }
};
class Y : public X {
void f() const { std::cout << "Y"; }
};
void print(const X &x) { x.f(); }
int main() {
X tab[2];
Y y1;
tab[0] = y1;
print(y1);
print(tab[0]);
print(tab[1]);
std::cout << std::endl;
}