下面的代码是否显示了继承或多态的示例?对我来说,两者都是,但我最终回答继承,因为它只给了我选择的选择。派生类显然继承了基类的属性,但由于方法的行为只有一个变化,它也可以是一个多态的例子。
有任何意见吗?
class Base
{
public:
Base() {}
~Base() {}
virtual int Foo(int a)
{
return a*a;
}
};
class Derived : public Base
{
public:
Derived() {}
~Derived() {}
int Foo(int a)
{
return a*a*a;
}
};
答案 0 :(得分:0)
它显然显示了遗传。没有继承就很难有多态性(虽然你可以用模板进行编译时多态)。我不认为此代码显示多态性 - 必须涉及通过基指针/引用使用派生对象。
所以:
Derived d;
d.Foo(5); // No polymorphism.
但是
std::unique_ptr<Base>() Factory(int i);
auto pBase = Factory(1);
auto a = pBase->Foo(5); // *This* is polymorphism