2013-03-04 13 views
13

Dưới đây là một đoạn trích từ tài liệu của std :: is_copy_constructible (1) và std::is_trivially_copy_constructible (2) trên cppreference.com:các hoạt động tầm thường trong std là gì :: is_trivially_copy_constructible trong C++

1) Kiểm tra xem một loại là CopyConstructible, tức là có một hàm tạo bản sao rõ ràng hoặc ngầm định có thể truy cập . Nếu yêu cầu được đáp ứng, giá trị hằng số thành viên bằng nhau được cung cấp, nếu không giá trị là sai.

2) Tương tự như (1), nhưng biểu thức của hàm tạo bản sao không gọi bất kỳ thao tác nào không tầm thường.

Vậy điều gì được coi là một hoạt động tầm thường ở đây?

+2

[này] (http://stackoverflow.com/questions/4178175/what-are-aggregates-and-pods-and-how-why-are-they-special) có thể giúp –

+0

@AndyProwl: Rất hữu ích, cảm ơn. – vitaut

Trả lời

15

Như tôi đã đặt nó once before:

Vì vậy, tất cả những điều tầm thường và không tầm thường là gì?

Một bản sao/di chuyển constructor cho lớp X là tầm thường nếu nó không phải là người dùng cung cấp và nếu

- lớp X không có chức năng ảo (10,3) và không có lớp cơ sở ảo (10.1), và

- các nhà xây dựng được lựa chọn để sao chép/di chuyển mỗi lớp cơ sở subobject trực tiếp là tầm thường, và

- cho mỗi thành viên không tĩnh dữ liệu của X là loại lớp (hoặc mảng đó), các nhà xây dựng chọn sao chép/di chuyển thành viên đó là tầm thường;

nếu không thì trình tạo bản sao/di chuyển không nhỏ.

Về cơ bản điều này có nghĩa rằng một bản sao hoặc di chuyển constructor là tầm thường nếu nó không phải là người dùng cung cấp, lớp không có gì ảo trong nó, và tài sản này nắm giữ một cách đệ quy cho tất cả các thành viên của lớp và cho lớp cơ sở.

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