new int[8]()
sẽ, theo [dcl.init] /17.4, được khởi tạo giá trị. Vì nó là một mảng, [dcl.init] /8.3 cho chúng ta biết rằng giá trị khởi tạo một mảng có nghĩa là giá trị khởi tạo mỗi phần tử.
new int[8]{}
sẽ, theo [dcl.init.list] /3.2, gọi khởi tạo tổng hợp trên mảng. Vì không có phần tử nào trong danh sách-braced-init, mỗi phần tử còn lại trong mảng (ví dụ: tất cả 8) sẽ được khởi tạo "từ một danh sách khởi tạo rỗng" ([dcl.init.aggr]/8). Trong đó, sau khi nhảy qua [dcl.init.list] một lần nữa, dẫn bạn đến 3.4, cho bạn biết rằng "từ một danh sách khởi tạo rỗng" cho các loại không tổng hợp có nghĩa là khởi tạo giá trị.
Vì vậy, có, cả hai đều đánh giá giống nhau.
Nguồn
2016-12-26 06:45:30
Càng nhiều câu hỏi tôi đọc, tôi càng trở nên khó hiểu tại sao ủy ban nghĩ cú pháp cú đúp là một ý tưởng hay ... – Mehrdad
@Mehrdad: Vậy ... cái gì, bạn không muốn khởi tạo một mảng mà bạn phân bổ với các giá trị? –
@NicolBolas: Lần cuối bạn cần làm điều đó khi nào? Bạn đã từng làm gì trước C++ 11? – Mehrdad