class Foo
{
friend class SquirrelVM;
public:
Foo() { cout << "Ctor" << endl; }
virtual ~Foo() { cout << "Dtor" << endl; }
Foo(const Foo & o) { cout << "const Ctor" << endl; }
template <typename _ty>
Foo(const _ty & val) { cout << "T const Ref" << endl; }
template <typename _ty>
Foo(_ty & val) { cout << "T Ref" << endl; }
template <typename _ty>
Foo(_ty * val) { cout << "T Ptr" << endl; }
};
Foo CreateFoo()
{
Foo ret;
return ret;
}
int main(int argc, char* argv[])
{
Foo f = CreateFoo();
return 0;
}
đầu ra khác nhau giữa vs2005 và vs 2010. kết quả đầu ra dự kiến là như thế này ..Template chức năng là khác nhau giữa vs2005 và VS2010
Ctor
const Ctor
Dtor
Dtor
đầu ra trên được rút ra nếu tôi xây dựng trong vs2005.
Nhưng, sản lượng VS2010 là không giống với ưu tiên
Ctor
T Ref
Dtor
Dtor
Tại sao mẫu chức năng của vs2005 là cao hơn so với chức năng bình thường trong VS2010?
[sửa] Nếu const là ommitted trên constructor sao chép, hơn dự kiến sản lượng (đó là cùng với vs2005) đi ra. Có bất kỳ tác dụng phụ nào nếu hình thức của nhà xây dựng sao chép không giống với hình thức được đề xuất? hình thức được đề nghị .. Tôi có nghĩa là ... Foo(const Foo&);
không Foo(Foo&);
Cảm ơn sự giúp đỡ của bạn. Vậy làm thế nào để giải quyết vấn đề đó? – codevania
Vui lòng kiểm tra lại câu hỏi của tôi. Tôi đã chỉnh sửa. – codevania
@codevania: Bạn cần sử dụng tham chiếu rvalue trong VS2010 và triển khai một hàm tạo di chuyển. – Puppy