gpt4 book ai didi

c++: vector 可以包含 Derived 类型的对象吗?

转载 作者:太空宇宙 更新时间:2023-11-04 13:40:33 25 4
gpt4 key购买 nike

标题几乎说明了一切。基本上,这样做是否合法:

class Base {
//stuff
}

class Derived: public Base {
//more stuff
}

vector<Base> foo;
Derived bar;
foo.push_back(bar);

根据我看过的其他帖子,下面是可以的,但我不想在这种情况下使用指针,因为很难使其线程安全。

vector<Base*> foo;
Derived* bar = new Derived;
foo.push_back(bar);

最佳答案

不,Derived对象将是 sliced : 所有额外的成员都将被丢弃。

使用 std::vector<std::unique_ptr<Base> > 而不是原始指针.

关于c++: vector<Base> 可以包含 Derived 类型的对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27795469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com