Đoạn 8.5p7 của C++ 11 tiểu bang Tiêu chuẩn:Cần làm rõ với 8.5.p7 trong C++ 11 Chuẩn
Để giá trị khởi tạo một đối tượng kiểu T có nghĩa là:
nếu T là loại lớp (có thể cv đủ điều kiện) (Điều 9) với hàm tạo do người dùng cung cấp (12.1), thì hàm khởi tạo mặc định cho T được gọi (và khởi tạo không đúng nếu T có không thể truy cập mặc định hàm tạo);
nếu T là một (có thể cv-đủ điều kiện) phi đoàn lớp loại mà không có một constructor dùng cung cấp, sau đó các đối tượng được zero-khởi và nếu T của constructor mặc định ngầm-tuyên bố là phi tầm thường, hàm tạo đó được gọi.
nếu T là loại mảng, thì mỗi phần tử được khởi tạo giá trị;
nếu không, đối tượng là không được khởi tạo.
Tôi gặp sự cố khi hiểu các ký tự in đậm ở trên. Cách gọi bổ sung của hàm tạo ngầm mặc định của T có thể thay đổi khởi tạo bằng không, điều đó vừa xảy ra trong trường hợp này?
+1 Khá rõ ràng – Belloc
Cần lưu ý rằng VC++ không thực hiện đúng cách này. C++ 98 có các quy tắc khởi tạo khác nhau và VC++ vẫn thực hiện các quy tắc đó. [báo cáo lỗi] (http://connect.microsoft.com/VisualStudio/feedback/details/746973/incorrect-c-11-value-initialization-for-type-with-implicitly-declared-but-non-trivial-default -constructor) – bames53
Tôi mất một chút thời gian để mò mẫm điều này, nhưng, vâng, thực tế là các ctors ngầm/ngầm định có thể gọi một ctor cơ sở không ngầm là chìa khóa. +1 từ tôi –