C继承测验
发布时间:2020-12-16 10:24:33 所属栏目:百科 来源:网络整理
导读:我最近被问到一个基本的C问题,我实际上并不知道答案,我从来没有发现答案是什么.这是一个问题: 运行此程序时,可能会导致错误.您将对Base类进行哪些更改来修复它? #include iostreamclass Base {public: virtual void ShowMessage () { std::cout "Base clas
我最近被问到一个基本的C问题,我实际上并不知道答案,我从来没有发现答案是什么.这是一个问题:
运行此程序时,可能会导致错误.您将对Base类进行哪些更改来修复它? #include <iostream> class Base { public: virtual void ShowMessage () { std::cout << "Base class messagen"; } // 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 messagen"; } virtual ~Base() {} }; 在您的情况下,Derived :: myvalue将无法正确发布. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |