我想做从同一基类继承的类。 为了更容易使用,我想将类实例存储在一个数组中,并调用基类提供的方法并在子类中重写。
但是,它并没有像我想的那样工作。
用于说明的代码示例:
class A
{
public:
A() {}
~A() {}
virtual void F()
{
std::cout << "Hello A !" << std::endl;
}
private:
};
class B : public A
{
public:
B() {}
~B() {}
virtual void F() override
{
std::cout << "Hello B !" << std::endl;
}
private:
};
int main()
{
A aArray[2];
A a;
B b;
aArray[0] = a;
aArray[1] = b;
std::cout << "Direct call to F" << std::endl;
a.F();
b.F();
std::cout << "Call to F by array" << std::endl;
aArray[0].F();
aArray[1].F();
system("pause");
return 0;
}
我得到了结果:
Direct call to F
Hello A !
Hello B !
Call to F by array
Hello A !
Hello A !
我的目标是在我写作时找到一种方法:&#34; aArray [1] .F();&#34;这是从B类调用方法的B类实例,而不是A类中的方法。
怎么做? 很多。
Shadleur