Tại sao đầu ra của chương trình sau chỉ int3
và không phải là int3&4
?Sao chép hàm tạo với tham số mặc định không bao giờ được gọi là
#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);
}
Command: clang++ test.cpp -O0
Compiler: Apple phiên bản kêu vang 3.0 (thẻ/Apple/kêu vang-211,12) (dựa trên LLVM 3.0svn)
Nó in 'int3 & 4' cho tôi (GCC 4.6.2,' -O3'). –
Trên thực tế, g ++ 4.6.1 của tôi in "int3 & 4". – Duck
+1 cho trường hợp kiểm tra ngắn, đầy đủ. http://sscce.org –