如何解决C ++如何知道vector <Base *>中的哪个元素是派生的*?
C ++ /编译器如何在下面的代码中知道何时执行正确的代码?以及如何存储(在幕后)?我的向量包含Base*
,但是某处必须有一些额外的信息,对吧?
compiling code与此相同:
class Base {
public:
Base()=default;
virtual void DerivedOrBase() { std::cout << "Base\n"; }
};
class Derived : public Base {
public:
Derived()=default;
void DerivedOrBase() override { std::cout << "Derived\n"; }
};
int main()
{
std::vector<Base*> myVector;
myVector.push_back(new Base());
myVector.push_back(new Base());
myVector.push_back(new Base());
myVector.push_back(new Derived());
for(auto p : myVector) p->DerivedOrBase();
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。