如果我理解正确,如果像这样返回一个对象,则会发生复制:
CSomeObject getObject(){
//....
//....
return CSomeObject(...);
}
假设复制省略也会在这里发生是否安全:
CSomeObject getObject(){
CSomeObject some_object;
some_object.setStuff();
some_object.setMoreStuff();
//....
//....
return some_object;
}
CSomeObject some_object = getObject();
只有一个return语句,并且始终返回相同的临时对象。什么时候委托/间接回报:
CSomeObject getObject_2(){
//....
return getObject();
}
CSomeObject some_object = getObject_2();
答案 0 :(得分:1)
“C ++会在返回临时对象时发生复制省略” - 它可能会。直到C ++ 17(甚至那里,某些条件适用)才能保证。但是,大多数编译器都会忽略副本。