2012-07-09 35 views
6

tôi thấy hai giải pháp hợp lý cho vấn đề của một thành viên nắm quyền sở hữu của một tham số:thành viên nắm quyền sở hữu của tham số

Foo::Foo(std::unique_ptr<int> parameter) 
: member(std::move(parameter)) 
{ 
} 

Bar::Bar(std::unique_ptr<int> parameter) 
{ 
    member.swap(parameter); 
} 

nào sau đây là thành ngữ tốt hơn, dễ hiểu, dễ dàng hơn để gỡ lỗi, dễ dàng hơn để duy trì v.v.

Có giải pháp bổ sung nào cho vấn đề tôi đã bỏ lỡ không?

Trả lời

12

Luôn ưu tiên danh sách trình khởi tạo. Ngoài ra, nó bao gồm các loại có thể được di chuyển nhưng không hoán đổi, ví dụ, hoặc các loại có thể phải thực hiện các hoạt động tốn kém để xây dựng mặc định hoặc thực sự, các loại mà chỉ đơn giản là không thể được xây dựng mặc định.

Các vấn đề liên quan