Buscar..


Observaciones

Lo que realmente significa "funciones miembro const" de una clase significa. La definición simple parece ser que una función miembro const no puede cambiar el objeto. Pero lo que significa 'no puede cambiar' realmente significa aquí. Simplemente significa que no puede hacer una asignación para miembros de datos de clase.

Sin embargo, puede realizar otras operaciones indirectas como insertar una entrada en un mapa como se muestra en el ejemplo. Permitir que esto parezca que esta función const es modificar el objeto (sí, lo hace en un sentido), pero está permitido.

Entonces, el significado real es que una función miembro const no puede hacer una asignación para las variables de datos de clase. Pero puede hacer otras cosas como las explicadas en el ejemplo.

función miembro 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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow