Maison > développement back-end > C++ > Pouvez-vous surcharger l'opérateur [] deux fois pour créer un tableau bidimensionnel en C ?

Pouvez-vous surcharger l'opérateur [] deux fois pour créer un tableau bidimensionnel en C ?

Patricia Arquette
Libérer: 2024-12-31 13:37:11
original
346 Les gens l'ont consulté

Can You Overload the [] Operator Twice to Create a Two-Dimensional Array in C  ?

Surcharge de l'opérateur [] pour les tableaux bidimensionnels

La surcharge d'opérateur permet aux programmeurs d'étendre les fonctionnalités des opérateurs existants pour créer des comportements personnalisés pour leurs classes et leurs objets. Un cas d'utilisation courant consiste à surcharger l'opérateur [] pour accéder aux éléments d'un tableau. Cependant, est-il possible de surcharger l'opérateur [] deux fois, créant ainsi un tableau bidimensionnel ?

Double surcharge de l'opérateur []

Oui, c'est possible pour surcharger l'opérateur [] plusieurs fois pour obtenir un comportement de tableau bidimensionnel. En définissant un opérateur [ ] pour renvoyer un objet qui lui-même peut gérer l'indexation [ ], vous pouvez créer une structure de type tableau imbriquée.

Exemple de code

Considérez le exemple de code suivant :

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;
};
Copier après la connexion

Dans ce code, la classe ArrayOfArrays représente un tableau à deux dimensions. L'opérateur [ ] est surchargé deux fois :

  1. La première surcharge renvoie un objet Proxy lorsqu'il est fourni avec un index.
  2. La classe Proxy surcharge à nouveau l'opérateur [ ] pour récupérer des éléments du tableau sous-jacent.

Utilisation

Pour utiliser le ArrayOfArrays, vous pouvez l'indexer deux fois comme s'il s'agissait d'un tableau bidimensionnel normal :

ArrayOfArrays aoa;
aoa[3][5];  // Access the element at row 3, column 5
Copier après la connexion

Ce code invoquera d'abord l'opérateur [ ] sur l'instance ArrayOfArrays, qui renverra un objet Proxy pour la ligne 3. Ensuite, il invoquera l'opérateur [ ] sur l'objet Proxy, qui renverra l'élément de la colonne 5 de la ligne 3.

En implémentant double surcharge de l'opérateur [ ], vous pouvez simuler le comportement de tableaux bidimensionnels et créer des structures imbriquées pour des scénarios de stockage et de récupération de données plus complexes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal