请考虑以下完全运作的示例:
输出结果为:
有没有办法在继承中调用
是否有一种方法将
#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
的析构函数?我不知道unique_ptr也有切片问题。当然,我可以使用std::unique_ptr<B>
,但我想要一个std::vector<std::unique_ptr<A>>
并添加继承的项目。是否有一种方法将
std::unique_ptr
列表与继承结合使用?
~A()
声明为虚函数。 - juanchopanza