【问题标题】:How to get rid of these warnings? [duplicate]如何摆脱这些警告? [复制]
【发布时间】:2015-06-22 07:48:14
【问题描述】:
#include <iostream>
 #include "Pizza.h"

int main() {

 iFood* food;

food = new Pizza(14.0, 8);

 for (int i = 0; i < 3; i++)
     food->consume();
 food->display();
 std::cout << std::endl;

 delete food;

 food = new DeluxePizza(12.0, 6, "mushrooms, peppers");

 for (int i = 0; i < 2; i++)
     food->consume();
 food->display();
 std::cout << std::endl;

 delete food;
 }

这是我的 main.cpp 当我运行此代码时,它会显示在 iFood 上调用 delete 的警告,该警告是抽象的但具有非虚拟析构函数。

【问题讨论】:

  • #include class iFood{ public: virtual void consume()=0;虚空显示()常量=0; };
  • 你不应该在这里使用new。 C++ 不是 Java,不要试图盲目地复制你在那里学到的东西。

标签: c++


【解决方案1】:

你需要在iFood中创建析构函数virtual。

请参阅Why do we need a pure virtual destructor in C++? 了解原因。

【讨论】:

    猜你喜欢
    • 2017-01-25
    • 2010-12-13
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    相关资源
    最近更新 更多