代码是:
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方法返回很自然地会打破这个范例,因为它将返回一个指向被"复制"的对象的指针.