C++ 11 thêm khả năng cho trình biên dịch biết create a default implementation của bất kỳ số special member functions nào. Trong khi tôi có thể thấy giá trị của việc xóa một hàm, thì giá trị của một hàm mặc định rõ ràng ở đâu? Chỉ cần để trống và trình biên dịch sẽ làm việc đó.Điểm trong các hàm mặc định trong C++ 11 là gì?
Điểm duy nhất tôi có thể thấy là một constructor mặc định chỉ được tạo ra khi không có constructor khác tồn tại:
class eg {
public:
eg(int i);
eg() = default;
};
Nhưng là thực sự tốt hơn so với cách bạn làm điều đó bây giờ?
class eg {
public:
eg(int i);
eg() {}
};
Hoặc tôi có thiếu trường hợp sử dụng không?
[dig] Ngoài ra: việc xác định một số chức năng thành viên đặc biệt sẽ ngăn trình biên dịch khỏi mặc định những người khác, nhưng điều này có thể được kích hoạt lại với = mặc định. Ví dụ: nếu bạn triển khai hàm tạo bản sao tùy chỉnh thì hàm tạo mặc định sẽ không được tạo. Thay vì tự thực hiện nó, bạn có thể mặc định rõ ràng nếu điều đó là đủ. – boycy