通常、これは大きな値のコピーを伴わないように最適化されます(astd::vector
は移動セマンティクスが有効になっているため)。
std::vector<int> makeABigThing(){
std::vector<int> large_thing(1000, 0);
return large_thing;
}
関数が仮想メソッドの場合、これも同じ方法で最適化できますか?
struct Foo{
virtual std::vector<int> makeABigThing(){
std::vector<int> large_thing(1000, 0);
return large_thing;
}
};
つまり、実行時に呼び出された関数が選択されている場合でも、移動セマンティクスは機能しますか?