通常,这将被优化为不涉及复制大值(因为 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;
}
};
即,即使在运行时选择了被调用的函数,移动语义是否也有效?