Hãy lý luận bằng cách tương tự. Nếu bạn xác định một chức năng
void doSomething(A [137]) {
}
sau đó C ++ coi nó như thể bạn thực sự đã viết
void doSomething(A *) {
}
Nói cách khác, có một số loại trong đó, nếu bạn sử dụng chúng làm tham số cho hàm, C ++ sẽ tự động thay thế chúng bằng một loại khác, loại bạn nhận được bằng cách phân rã loại.
Trong trường hợp của bạn, A()là loại hàm không có đối số và trả về một A. Nếu bạn có một hàm C ++ lấy tham A()số làm đối số, thay vào đó C ++ sẽ có hàm lấy làm đầu vào A (*)(), một con trỏ tới hàm không có đối số và trả về một A. Lý do cho điều này là bạn không thể có một đối tượng loại A()trong C ++, mặc dù bạn có thể có một con trỏ tới một A().
A()là nhàAxây dựng?