小编sis*_*hke的帖子

c ++ shared_ptr继承内存问题"错误释放"

我按照给定的指示尝试解决大学问题.代码编译但会产生关于内存的警告.以下是代码的关键:

#include <iostream>
#include <vector>
#include <memory>    
using std::vector;
using std::shared_ptr;
using std::make_shared;

class ApsClass {
    protected :
        double goose;

    public :
        virtual ~ApsClass() {}
        virtual shared_ptr<ApsClass> clone() const = 0;
        double GetGoose() const { return goose; }
};


class DerivedClass : public ApsClass {
    public :
        ~DerivedClass() {} // Warning here*
        DerivedClass(double goose) { DerivedClass::goose = goose; }
        shared_ptr<ApsClass> clone() const override;
};

shared_ptr<ApsClass> DerivedClass::clone() const {
    return make_shared<DerivedClass>(goose);
}

class Storage {
    vector<shared_ptr<ApsClass>> geese;

    public :
        Storage() {} …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance memory-management shared-ptr virtual-destructor

1
推荐指数
1
解决办法
154
查看次数