Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Nạp chồng toán tử chỉ số mảng [] trong C++

Nạp chồng operator[] cho phép đối tượng class được truy cập như mảng: obj[index]. Trả về tham chiếu (int&) để cho phép cả đọc và ghi.

Ví dụ: Class Arr với kiểm tra giới hạn

#include <iostream>
#include <cstdlib>
using namespace std;

const int MAX = 7;

class Arr {
    int A[MAX];
    int size;
public:
    Arr(int s, int initVal) {
        if (s > MAX) { cerr << "Vượt size max\n"; exit(1); }
        size = s;
        for (int i = 0; i < size; ++i) A[i] = initVal;
    }

    int& operator[](int i) {
        if (i < 0 || i >= size) { cerr << "Chỉ số ngoài phạm vi\n"; exit(1); }
        return A[i]; // trả về tham chiếu để gán được: a[i] = 10;
    }
};

int main() {
    Arr a(7, 0);
    for (int i = 0; i < 7; ++i)
        a[i] = i * 10; // ghi

    cout << "Phần tử:\n";
    for (int i = 0; i < 7; ++i)
        cout << a[i] << endl; // đọc

    return 0;
}

Kết quả

Phần tử:
0
10
20
30
40
50
60

Lưu ý: Nên cung cấp hai phiên bản: const int& operator[](int) const cho đối tượng const, và int& operator[](int) cho đối tượng non-const.