Tôi biết rằng hàm tạo mặc định không được kế thừa, như đã nêu trong n3337.Cần một ví dụ cho thấy hàm tạo mặc định không được thừa hưởng
Và có một ví dụ có:
struct B2 {
B2(int = 13, int = 42);
};
struct D2 : B2 {
using B2::B2;
};
Với lời giải thích khá tốt:
Tập ứng cử viên của nhà xây dựng kế thừa trong
D2
choB2
là... —B2(int = 13, int = 42) —B2(int = 13) —B2()
Và quan trọng nhất:
Tập hợp các nhà xây dựng có mặt trong
D2
là
—D2()
, ngầm-tuyên bố constructor mặc định, không được thừa kế
Đối với tôi ví dụ này không hiển thị sự khác biệt, theo một nghĩa rằng ngay cả nếu điều này rất constructor đã được thừa hưởng - hành vi của nó không khác với hàm tạo mặc định được khai báo ngầm.
Tôi cần một ví dụ cho thấy sự khác biệt theo cách có thể dễ hiểu, giả sử, đối tượng quen thuộc với C++ 03 nhưng muốn tìm hiểu C++ 11.
[UPDATE]
Tất cả các câu trả lời (kể cả của riêng tôi) là thuộc loại "nếu mặc định c-tor được thừa hưởng sau đó dụ sẽ biên dịch/biên dịch không".
Tôi muốn câu trả lời có kết quả (hành vi có thể quan sát) khác với cách khác.
Nhìn vào đề xuất (ví dụ [N2203] (http://www.open-std.org/JTC1/SC22/WG21/docs/papers /2007/n2203.html)), điều này dường như đã được (một phần của?) Lý do không để kế thừa sao chép/di chuyển và ctors mặc định. – dyp