C继承测验

C继承测验,第1张

概述我最近被问到一个基本的C问题,我实际上并不知道答案,我从来没有发现答案是什么.这是一个问题: 运行此程序时,可能会导致错误.您将对Base类进行哪些更改来修复它? #include <iostream>class Base {public: virtual void ShowMessage () { std::cout << "Base class message\n 我最近被问到一个基本的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;}

它在我的机器上编译并运行得很好.有谁知道他们在找什么?

解决方法 您需要向Base类添加虚拟析构函数.

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

在您的情况下,Derived :: myvalue将无法正确发布.

总结

以上是内存溢出为你收集整理的C继承测验全部内容,希望文章能够帮你解决C继承测验所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1219932.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存