Recherche…


Remarques

Que signifie vraiment les fonctions de membre const d'une classe? La définition simple semble être que, une fonction membre const ne peut pas changer l'objet. Mais ce qui ne peut pas changer signifie vraiment ici. Cela signifie simplement que vous ne pouvez pas faire d'affectation pour les membres de données de classe.

Cependant, vous pouvez effectuer d'autres opérations indirectes, telles que l'insertion d'une entrée dans une carte, comme indiqué dans l'exemple. Permettre que cela ressemble à cette fonction const modifie l'objet (oui, dans un sens), mais c'est permis.

Donc, la véritable signification est qu'une fonction membre const ne peut pas faire une affectation pour les variables de données de classe. Mais il peut faire d'autres choses comme expliqué dans l'exemple.

fonction membre constante

#include <iostream>
#include <map>
#include <string>

using namespace std;

class A {
public:
    map<string, string> * mapOfStrings;
public:
    A() {
        mapOfStrings = new map<string, string>();
    }

    void insertEntry(string const & key, string const & value) const {
        (*mapOfStrings)[key] = value;             // This works? Yes it does. 
        delete mapOfStrings;                      // This also works
        mapOfStrings = new map<string, string>(); // This * does * not work
    }

    void refresh() {
        delete mapOfStrings;
        mapOfStrings = new map<string, string>(); // Works as refresh is non const function
    }

    void getEntry(string const & key) const {
        cout << mapOfStrings->at(key);
    }
};

int main(int argc, char* argv[]) {

    A var;
    var.insertEntry("abc", "abcValue");
    var.getEntry("abc");
    getchar();
    return 0;
}


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow