2012-01-23 23 views
7

Một C++ wiki book đề cập đếnAi đặt ra thuật ngữ chỉ định hợp nhất (hoặc hợp nhất)?

... Trong C++ 0x, chẳng hạn một toán tử gán được biết đến như mộtthống nhất phân công điều hành vì nó giúp loại bỏ sự cần thiết phải viết hai toán tử gán khác nhau. ..

cho một toán tử gán mà sẽ đưa nó kiểu lớp theo giá trị:

String & operator = (String s) // the pass-by-value parameter serves as a temporary 
{ 
    s.swap (*this); // Non-throwing swap 
    return *this; 
} 

Tôi đã thử sử dụng thuật ngữ này, nhưng nó dường như không được sử dụng rộng rãi.

Nó đến từ đâu?

+0

[Câu hỏi này] (http://stackoverflow.com/questions/7458110/c-unified-assignment-operator-move-semantics) đề cập đến video trên kênh 9 về Chuyển tiếp hoàn hảo, tôi sẽ không xem video đó tìm ra, nhưng có thể bạn muốn. Nếu từ Kênh 9, có thể MS là nguồn gốc của thuật ngữ. – Leigh

Trả lời

4

Nó dường như là ám chỉ đến số unification diễn ra trong các hệ thống kiểu chính thức. Ý nghĩ là nếu các giá trị r và l có thể được đưa đến cùng một loại (thống nhất) bởi chỉ những thay thế hợp pháp, nhất định, thì nhiệm vụ được hình thành tốt.

Wikipedia tuyên bố ý tưởng lần đầu tiên được chú ý có ý nghĩa (và có thể tên của nó) theo John Alan Robinson.

1

Tôi không chắc ai đã viết nó nhưng cuốn sách wiki là sai. Từ "hợp nhất" xuất hiện chính xác không lần trong tiêu chuẩn "C++ 0x" (bạn thực sự nên sử dụng cụm từ "C++ 11" ngày nay, nó đã được phê duyệt vào tháng 8 năm 2011).

Thuật ngữ chính xác là sao chép elision. Từ C++ 0x (n3242, lần cuối cùng tôi có thể nhận được mà không phải trả tiền), 12.8 Copying and moving class objects, /34:

Khi đáp ứng các tiêu chí nhất định, thực hiện được phép bỏ qua việc sao chép/di chuyển đối tượng lớp học, ngay cả khi các nhà xây dựng sao chép/di chuyển và/hoặc destructor cho đối tượng có tác dụng phụ.

Trong trường hợp này, việc triển khai xử lý nguồn và đích của thao tác sao chép/di chuyển bị bỏ qua chỉ đơn giản là hai cách khác nhau tham chiếu đến cùng một đối tượng và sự phá hủy đối tượng đó xảy ra vào cuối thời gian khi hai các đối tượng sẽ bị phá hủy mà không cần tối ưu hóa.

sự bỏ bớt này hoạt động sao chép/di chuyển, được gọi là bản sao sự bỏ bớt, được cho phép trong các trường hợp sau (có thể được kết hợp để loại bỏ nhiều bản sao) ...

+0

Bạn cũng có thể nhận [N3337] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf), bản nháp công khai đầu tiên * sau * C++ 11 được xuất bản, công bố. (Không có thay đổi cho phần này mặc dù). –

+0

Vâng, tuyên bố "X được gọi là Y" sẽ là đúng nếu một số người hợp lý sử dụng * Y * để chỉ X, ngay cả khi đó không phải là thuật ngữ được xác định chuẩn hoặc thậm chí nếu nó không chính xác. –

+0

Đó là hai điều khác nhau. Sao chép elision là một trong những lợi thế của việc hợp nhất nhiệm vụ (tôi cũng nghĩ rằng nó cũng được áp dụng trước C++ 11 ...). –

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