接下来,有一个抽象类"形状"和两个派生类"矩形"和"圈" 我正在使用Base类指向对象并将其初始化为派生对象。
为什么最后一个也打印"矩形"?
#include <iostream>
#include <string>
class Shape {
public:
virtual void show() = 0;
};
class Rectangle : public Shape {
public:
void show() {
std::cout << "Draw Rectangle" << std::endl;
}
};
class Circle : public Shape {
public:
void show() {
std::cout << "Draw Circle" << std::endl;
}
};
int main() {
Shape *s = new Rectangle();
s->show();
Circle c;
*s = c;
s->show();
return 0;
}
两者都打印&#34;矩形&#34;。为什么最后一个不打印&#34; Circle&#34;
但如果我这样做
Circle *c = new Circle();
s = c;
s->show();
然后打印&#34; Circle&#34;