Trong mã sau, tôi đã cung cấp đối số mặc định cho toán tử chỉ số mảng.Cung cấp các đối số mặc định cho toán tử chỉ số và toán tử gọi hàm
struct st
{
int operator[](int x = 0)
{
// code here
}
};
Nhưng, trình biên dịch tạo ra một lỗi:
error: 'int st::operator[](int)' cannot have default arguments
int operator[](int x = 0)
Nhưng, Nếu tôi cung cấp đối số mặc định cho chức năng gọi điều hành.
struct st
{
int operator()(int x = 0)
{
// code here
}
};
Nó hoạt động tốt.
Vì vậy, tôi có một câu hỏi:
- đối số mặc định Tại sao không cho phép các nhà điều hành mảng subscript?
- Tại sao các đối số mặc định được phép cho toán tử gọi hàm?
Bởi vì chức năng cuộc gọi có thể có bất kỳ số lượng đối số, trong khi mảng subscripting luôn có một. – interjay
Tôi không thể tưởng tượng bất kỳ việc sử dụng nào cho "subscript mặc định". – molbdnilo
Điều gì sẽ 'x []' có nghĩa là trong trường hợp này? – glglgl