¿Por qué es la salida del siguiente programa simplemente int3
y no int3&4
?constructor de copia con parámetros por defecto nunca se llama
#include <iostream>
class B
{
public:
explicit B(int i) { std::cout<<"int"<<i; }
B(const B& rhs, int i = 0) { std::cout<<"&"<<i; }
};
int main(int, char**)
{
B b(B(3), 4);
}
Comando: clang++ test.cpp -O0
Compilador: Apple versión 3.0 sonido metálico (etiquetas/de Apple/ruido metálico-211.12) (basado en LLVM 3.0svn)
Imprime 'int3 & 4' para mí (GCC 4.6.2,' -O3'). –
En realidad, mi g ++ 4.6.1 imprime "int3 y 4". – Duck
+1 para el caso de prueba corto y completo. http://sscce.org –