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
Barbara Streisandoriginal
2024-12-02 17:43:15520parcourir

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());
    }
};

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!

Déclaration:
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