Nếu bạn nhìn vào ngữ pháp cho *declarator*s in §8/4
bạn sẽ nhận thấy rằng một noptr-declarator
có thể được viết như sau (ptr-declarator
), có nghĩa là, nó có thể được viết như sau (declarator-id
), trong đó xác nhận tờ khai như những người thân trong tiêu đề. Như vấn đề của thực tế mã này biên dịch mà không có một vấn đề:Mục đích của khai báo như int (x); hoặc int (x) = 10;
#include <iostream>
struct A{ int i;};
int (x) = 100;
A (a) = {2};
int main()
{
std::cout << x << '\n';
std::cout << a.i << '\n';
}
Nhưng mục đích của việc cho phép những ngoặc khi một con trỏ (một mảng hoặc một chức năng) không được tham gia vào việc khai báo là gì?
Có lẽ vì cấm chúng sẽ yêu cầu ngữ pháp phức tạp hơn. –
Đó có thể là một lời giải thích. Tôi không nghĩ về điều này. – Mao
Tương tự, '(42)' là một biểu thức hợp lệ mặc dù dấu ngoặc đơn là không cần thiết. –