thể trùng lặp:
Why is it an error to use an empty set of brackets to call a constructor with no arguments?Lớp khởi tạo có hoặc không có dấu ngoặc đơn?
#include <iostream>
using namespace std;
class CTest
{
int x;
public:
CTest()
{
x = 3;
cout << "A";
}
};
int main() {
CTest t1;
CTest t2();
return 0;
}
CTest t1 in "A" của khóa học.
Nhưng có vẻ như không có gì xảy ra ở t2(), nhưng mã chạy tốt.
Vì vậy, chúng tôi có sử dụng những dấu ngoặc đơn đó không có đối số không? Hoặc tại sao chúng ta có thể sử dụng nó theo cách này?
Đó là [phân tích cú pháp khó chịu nhất] (http://en.wikipedia.org/wiki/Most_vexing_parse) trong C++ –
@PeterWood: Cá nhân, tôi tranh chấp điều đó. Trong lịch sử, "phân tích cú pháp gây tranh cãi nhất" chỉ được đề cập đến các trường hợp sự mơ hồ xảy ra với bộ khởi tạo là giá trị được khởi tạo tạm thời, ví dụ: 'CTest t2 (CTest());' thay vì trường hợp đơn giản này. –
@CharlesBailey 'liên quan đến phân tích cú pháp gây tranh cãi nhất' sẽ là một cách tốt hơn để đặt nó. Cảm ơn. –