C++ 从非多态类继承

C++ 从非多态类继承,c++,inheritance,destructor,new-operator,C++,Inheritance,Destructor,New Operator,假设我想在一个类上创建一个包装器,但该类没有虚拟析构函数(它根本不是多态的) 但是,如果创建指针: void f(std::unique_ptr<class_type> to_me) { /**/ } f(std::unique_ptr<class_type>(new wrapper)); void f(标准::对我唯一) { /**/ } f(std::unique_ptr(新包装器)); 当std::unique\u ptr生命结束时,不会调用包装器的析构函数

假设我想在一个类上创建一个包装器,但该类没有虚拟析构函数(它根本不是多态的)

但是,如果创建指针:

void f(std::unique_ptr<class_type> to_me)
{ /**/ }

f(std::unique_ptr<class_type>(new wrapper)); 
void f(标准::对我唯一)
{ /**/ }
f(std::unique_ptr(新包装器));

std::unique\u ptr
生命结束时,不会调用
包装器的析构函数,但是,既然
包装器
有一个微不足道的析构函数,并且没有任何东西需要销毁或清理,因为它没有自己的数据成员,那么该标准对这种情况怎么说?是UB吗?

是的,是UB。您不需要移动表达式
std::unique\u ptr(新包装)
,它已经是一个右值。没错。固定的。你知道,习惯。至少可以说,这不是个好主意。@n.m.是的,我知道。我也不喜欢。我只是好奇,如果派生类没有任何东西可以销毁,那么会发生什么情况。标准对不添加成员的类没有例外。UB是UB是UB。还有什么要知道的?
void f(std::unique_ptr<class_type> to_me)
{ /**/ }

f(std::unique_ptr<class_type>(new wrapper));