首頁 > 後端開發 > C++ > 二維數組存取時能否重載兩次[]運算子?

二維數組存取時能否重載兩次[]運算子?

Barbara Streisand
發布: 2024-12-30 09:19:14
原創
441 人瀏覽過

Can the [] Operator Be Overloaded Twice for Two-Dimensional Array Access?

二維陣列的運算子[][]重載

問題出現了: [] 運算子是否可以重載兩次以啟用表示法就像二維數組的function3 一樣?

答案:是的,它是可能的

要實現這一點,可以重載運算符[]以返回一個對象,該對象提供另一個[ ]運算子來存取所需的元素。這是一個範例程式碼:

class ArrayOfArrays {
public:
    ArrayOfArrays() {
        _arrayofarrays = new int*[10];
        for(int i = 0; i < 10; ++i)
            _arrayofarrays[i] = new int[10];
    }

    class Proxy {
    public:
        Proxy(int* _array) : _array(_array) { }

        int operator[](int index) {
            return _array[index];
        }
    private:
        int* _array;
    };

    Proxy operator[](int index) {
        return Proxy(_arrayofarrays[index]);
    }

private:
    int** _arrayofarrays;
};
登入後複製

這允許使用如下:

ArrayOfArrays aoa;
aoa[3][5];
登入後複製

請注意,上面是一個簡化的範例;通常會實現額外的邊界檢查和其他功能。

以上是二維數組存取時能否重載兩次[]運算子?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板