有没有一种方法可以阻止某个对象的析构函数清除另一个对象正在使用的内存?

时间:2019-05-25 18:45:13

标签: c++

这是我的第一个问题,所以在这里让我轻松一点。

我想知道,是否可以防止析构函数清理分配的内存?

我知道我可以在副本构造函数中创建一个深层副本,以处理指向相同内存分配的两个对象,因此,当一个对象超出范围时,它不会清除另一个对象正在使用的内存。

我只是想知道是否有一种特定的方法可以防止析构函数从特定地址清除内存,以保护我的变量以保护另一个对象。

出于好奇,问这个问题比其他任何事情都重要。

class Tricycle
{
public:
    Tricycle();                     // default constructor
    Tricycle(const Tricycle&);      // copy constructor
    ~Tricycle();                    // destructor
    int getSpeed() const { return *speed; }
    void setSpeed(int newSpeed) { *speed = newSpeed; }
    void pedal();
    void brake();

private:
    int *speed; // VARIABLE SPEED IS THE ONE POINTER BEING SHARED
};

//...

Tricycle::Tricycle(const Tricycle& rhs)
{
    speed = new int;
    *speed = rhs.getSpeed();
}

//THIS SOLUTION OBVIOUSLY WORKS, I JUST WANTED TO GIVE CONTEXT

没有预期的结果,只是有关C ++的问题。而且,此代码不是我编写的,而是我正在使用的书SamsTeachYourself C ++中的示例之一。

说明

我不是要使用此代码做任何事情,但是我想这可以用于在两个对象之间共享数据,因此当一个对象超出范围时,另一个对象就不会指向某个对象不存在。

谢谢大家

-Versalys

0 个答案:

没有答案