Почему вывод следующей программы только int3
, а не int3&4
?Конструктор копирования с параметрами по умолчанию никогда не называется
#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);
}
Команда: clang++ test.cpp -O0
Компилятор: Apple лязг версия 3.0 (теги/Apple/лязг-211,12) (на основе LLVM 3.0svn)
Он печатает 'int3 & 4' для меня (GCC 4.6.2,' -O3'). –
На самом деле, мой g ++ 4.6.1 печатает «int3 & 4». – Duck
+1 для короткого, полного тестового случая. http://sscce.org –