thể trùng lặp:
Why is it an error to use an empty set of brackets to call a constructor with no arguments?constructor mặc định cho int
Trong một câu trả lời cho this question nó nói rằng
ints là mặc định-xây dựng là 0, vì nếu bạn khởi tạo chúng bằng int(). Các kiểu nguyên thủy khác được khởi tạo tương tự (ví dụ: double(), long(), bool(), v.v.).
Ngay khi tôi đang giải thích điều này cho đồng nghiệp của tôi, tôi đã tạo mã sau đây, compiled (gcc-4.3.4) and ran và đã quan sát hành vi không mong muốn.
#include <iostream>
int main() {
int i();
std::cout << i << std::endl; // output is 1
}
Tại sao đầu ra 1
nhưng 0
?
này được giải thích: [Tại sao nó lỗi sử dụng một tập rỗng của dấu ngoặc để gọi một constructor không có đối số?] (Http: //stackoverflow.com/questions/180172/why-is-it-an-error-to-use-an-empty-set-of-brackets-to-call-a-constructor-with-no) –
Tôi ngạc nhiên khi nó biên dịch, vì có vẻ như bạn tình cờ gặp [phân tích cú pháp khó chịu nhất] (http://en.wikipedia.org/wiki/Most_vexing_parse). –
Chúc mừng bạn đã khám phá [phân tích cú pháp gây tranh cãi nhất] (http://en.wikipedia.org/wiki/Most_vexing_parse). – dasblinkenlight