运行此程序时,可能会导致错误.您将对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;}
它在我的机器上编译并运行得很好.有谁知道他们在找什么?
解决方法 您需要向Base类添加虚拟析构函数.class Base {public: virtual voID ShowMessage () { std::cout << "Base class message\n"; } virtual ~Base() {}};
在您的情况下,Derived :: myvalue将无法正确发布.
总结以上是内存溢出为你收集整理的C继承测验全部内容,希望文章能够帮你解决C继承测验所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)