thể trùng lặp:
Why is it an error to use an empty set of brackets to call a constructor with no arguments?C++ constructor ma quái
Cho phép có mã này
class Foo {
Foo(int) { }
};
Sau đó, chúng tôi có có kết quả:
int main() {
Foo f1 = Foo(5); // 1: OK, explicit call
Foo f2(5); // 2: OK, implicit call
Foo f3(); // 3: no error, "f3 is a non-class type Foo()", how so?
Foo f4(f1); // 4: OK, implicit call to default copy constructor
Foo f5; // 5: expected error: empty constructor missing
}
Bạn có thể giải thích những gì đang xảy ra trong trường hợp ?
tìm kiếm: vexing parse – Nim
@Nim: Phải là câu trả lời. –
Cũng lưu ý rằng ví dụ 5 đang làm những gì được mong đợi ví dụ 3 để làm và gọi hàm khởi tạo mặc định. – Joe