是否有必要在以下C++代码中使用"new"运算符?

Ton*_*ong 3 c++ this-pointer

代码是:

class base{
    base(){}
    virtual base* copy()const=0;
    virtual ~base(){}
};
class derived:public base{
    derived(){}
    base* copy()const;
    ~derived(){}
};
base* derived::copy()const{
   return new derived(*this);
}
Run Code Online (Sandbox Code Playgroud)

是否有必要new在函数中使用运算符copy()或代码使用new运算符的原因?

我应该直接返回this指针,如下所示:

const base* derived::copy()const{
   return this;// note: this pointer is const.
}
Run Code Online (Sandbox Code Playgroud)

Seb*_*icz 11

把它非常简单,没有.

thisC++中的关键字是一小段语法糖,意思是"指向此对象的当前实例的指针".

一个copy方法,通过英语的定义,返回一个新的对象,等同于以各种方式第一,但占据内存的不同位置.this从一个copy方法返回很自然地会打破这个范例,因为它将返回一个指向被"复制"的对象的指针.