Suponga que tiene una función como esta:C++ ¿Se llama aquí al constructor de copia?
Foo foo() {
Foo foo;
// more lines of code
return foo; // is the copy constructor called here?
}
Foo bar() {
// more lines of code
return Foo(); // is the copy constructor called here?
}
int main() {
Foo a = foo();
Foo b = bar();
}
Cuando alguna de las funciones devuelven, se llama el constructor de copia (supongo que habría uno)?
¿Qué quiere decir con "supongo que habría uno"? Cada clase tiene un constructor de copia (aunque puede ser 'private', o en C++ 0x' delete'd). Si la clase no declara uno, obtiene un constructor de copia implícitamente declarado. – aschepler
También vea http://stackoverflow.com/questions/665825/copy-constructor-vs-return-value-optimization – xtofl
Es fácil probar algo como esto. Simplemente implemente un constructor de copia e imprima un mensaje en él. – gregg