【发布时间】:2012-09-20 19:09:47
【问题描述】:
class classa {
public:
virtual void foo();
};
class classb : public classa {
public:
virtual void foo() override;
};
void classa::foo()
{
std::cout << "foo from a" << std::endl;
}
void classb::foo()
{
std::cout << "foo from b" << std::endl;
}
int main()
{
std::vector<classa> stuff;
classa a;
classb b;
stuff.push_back(a);
stuff.push_back(b);
stuff[0].foo();
stuff[1].foo();
return 0;
}
我预计上面的代码会返回
foo from a
foo from b
但它同时返回foo from a。
我认为这是因为向量存储了classa,但我不确定。
如何让classb:foo() 被b 调用?
【问题讨论】:
-
"std::cout 东西;"好像错了,你确定那真的是你的代码吗?
-
@PeteFordham stackoverflow 出于某种原因更改了它。它旨在阅读(这也可能改变......): std::vector
stuff; -
您不能在
<pre>中使用<和>,因为它被解释为HTML。相反,使用四个空格缩进。 -
哪个版本的 C++ 包含
override关键字?
标签: c++ class function overriding