"chúng ta có thể initializate đối tượng của một lớp mà chúng tôi vẫn chưa xác định bất kỳ nhà xây dựng sử dụng:.Sao chép constructor xoăn niềng răng khởi
- khởi tạo
- bản khởi tạo khởi
- mặc định..
Ví dụ:
struct Work { string author; string name; int year; }; Work s9 { "Bethoven", "Symphony No. 9 in D minor, Op. 125; Choral", 1824 }; // memberwise initialization Work currently_playing {s9}; // copy initialization Work none {}; // default initialization
Ngôn ngữ lập trình C++ 4th Ed. Chương 17.3.1
Ví dụ:
struct Data
{
int mMember1;
float mMember2;
char mMember3;
};
int main()
{
Data aData_1{1,0.3,33};
Data aData_2{aData_1};
return EXIT_SUCCESS;
}
này phải làm việc, mặc dù tôi nhận được một lỗi biên dịch càng nhiều với GCC như với Clang. Lỗi là "không thể chuyển đổi dữ liệu thành int" trong cả hai trình biên dịch. Tuy nhiên, việc triển khai constructor sao chép lỗi này biến mất hoặc không có implenting nó nhưng sử dụng cú pháp dấu ngoặc tròn. Vấn đề là một chút ngu ngốc và thay đổi xoăn cho vòng niềng răng vấn đề được giải quyết. Nhưng tại sao các quy tắc của TC + + PL không được theo sau ?, là một vấn đề bộ compilator hay tôi hiểu lầm một cái gì đó ?. Cảm ơn trước.
Điều này được cố định bởi DR thành C++ 14, [xem tại đây] (http://stackoverflow.com/questions/31776359/explicit-copy-constructor-and-uniform-initialization/31776937) –