考虑以下功能齐全的示例:
#include <iostream>
#include <memory>
class A {
public:
A() {
std::cout << "A() \n";
}
~A() {
std::cout << "~A \n";
}
};
class B:public A {
public:
B() {
std::cout << "B() \n";
}
~B() {
std::cout << "~B() \n";
}
};
int main() {
std::cout << "Output: \n";
{
std::unique_ptr<A> TestB(new B());
}
return 0;
}
输出是:
Output:
A()
B()
~A
有没有办法B
像这样继承调用 's 的析构函数?我不知道 unique_ptrs 也有切片问题。当然我可以使用std::unique_ptr<B>
,但我想要一个std::vector<std::unique_ptr<A>>
并添加继承的项目。
有没有办法将std::unique_ptr
s 列表与继承结合起来?