Maison > développement back-end > C++ > Comment puis-je implémenter efficacement les getters Const et Non-Const en C ?

Comment puis-je implémenter efficacement les getters Const et Non-Const en C ?

Barbara Streisand
Libérer: 2024-12-02 17:43:15
original
529 Les gens l'ont consulté

How Can I Efficiently Implement Both Const and Non-Const Getters in C  ?

Surmonter l'énigme de la const pour les getters en double

Le dilemme se pose lors de l'implémentation des getters dans des classes avec des versions const et non const. Les erreurs de compilation entravent la mise en œuvre de l’une ou l’autre méthode en utilisant l’autre. De plus, le casting est nécessaire pour appeler la version const à partir de la version non const.

Une solution élégante

Effective C propose une solution non conventionnelle mais efficace : implémenter la version non const. -version const en supprimant le const de la version const. Même si elle n'est pas esthétique, cette approche garantit la sécurité puisque la fonction appelante n'est pas constante. Ainsi, il est permis de supprimer le const de l'objet const.

Exemple :

class Foo
{
public:
    const int& get() const
    {
        // Non-trivial work
        return foo;
    }

    int& get()
    {
        return const_cast<int&>(const_cast<const Foo*>(this)->get());
    }
};
Copier après la connexion

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