我有以下情况,简要说明:
class K {
K clone() const{K cl; /* clone this to cl then */ return cl; }
};
K* call_clone()
{
K k;
return new K(k.clone());
}
编译器优化后,这会被双重复制吗?
或者:
会是C*clone()
更有效的实现吗?
像这样:
class K {
K* clone() const { K*p=new K(); /* clone this to *p then */ return p; }
};
K* call_clone()
{
K k;
return k.clone();
}
(我问这个是因为即使是 K 的浅拷贝也可能很昂贵,实际上它将是一个类数据结构。)