【发布时间】:2023-03-19 07:10:01
【问题描述】:
鉴于这个程序:
struct Base
{
virtual void f() {}
};
struct Derived:public Base
{
};
int main()
{
Derived* c = new Derived;
delete c;
}
gcc-4.4 -Wall 很好,但 gcc-5.2 -Wall 给出警告:删除具有非虚拟析构函数的多态类类型“Derived”的对象可能会导致未定义的行为 [-Wdelete-non-virtual-dtor]
我看到了the discussion on deleting a base pointer,但在我的情况下,它是派生对象。我认为这是一个 gcc 错误,但显然是GNU doesn't think so。有没有办法在不改变基类定义的情况下摆脱警告?
【问题讨论】:
-
代码是正确的;你可以忽略警告。
标签: c++ compiler-warnings derived-class