gpt4 book ai didi

C++ 继承测验

转载 作者:太空狗 更新时间:2023-10-29 19:46:08 25 4
gpt4 key购买 nike

我最近被问到一个基本的 C++ 问题,我实际上并不知道答案,而且我也从未找到答案。这是问题:

运行此程序时可能会导致错误。您将对 Base 类进行哪些更改以修复它?

#include <iostream>

class Base {
public:
virtual void ShowMessage () {
std::cout << "Base class message\n";
}

// Something should be added here!
};

class Derived : public Base {
public:
explicit Derived (const std::string & value)
: myValue(value)
{
}

virtual void ShowMessage () {
std::cout << "Derived class message " << myValue << "\n";
}

private:
std::string myValue;
};

int main () {
Base * obj = new Derived("Test message");
obj->ShowMessage();
delete obj;
}

它在我的机器上编译和运行得很好。有人知道他们在找什么吗?

最佳答案

您需要向基类添加一个虚拟析构函数。

class Base {
public:
virtual void ShowMessage () {
std::cout << "Base class message\n";
}

virtual ~Base() {}
};

在您的情况下,Derived::myvalue 将无法正确释放。

关于C++ 继承测验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17268183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com