簡単に言えば、次のような状況があります。
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の浅いコピーでもコストがかかる可能性があるため、これを尋ねます。実際にはクラスデータ構造体になります。)