对不起,如果这个答案已经在这个网站上,但我已经看了一遍,找不到任何解决我的问题的方法。它与继承类中的同名函数有关。这是我的代码:
class A
{
public:
int foo(int c) { c = c+1; return c; };
};
class B : public A
{
public:
int foo(int c) { c = c-1; return c; };
};
int main()
{
A array[2];
array[0] = A item1;
array[1] = B item2;
for (int n=0;n<2;n++)
{
cout << array[n].foo(10) << endl;
}
return 0;
}
我希望输出:
11 // foo() from A class [10 + 1 = 11]
9 // foo() from B class [10 - 1 = 9 ]
但相反我得到
11
11
通过测试,我发现 B 类中的 foo() 函数没有在 for 循环中被调用。相反,调用了 A 类中的 foo() 函数,即使是在数组 [1] 处的 B 对象上也是如此。
这是因为我将数组定义为仅包含 A 类的对象吗?如果是这样,有没有办法可以在该 for 循环中的第二个对象上调用 B 类中的 foo() 函数?
预先感谢您的任何帮助!