Ricerca…


Osservazioni

Cosa significa "funzioni membro const" di una classe. La semplice definizione sembra essere quella, una funzione membro const non può cambiare l'oggetto. Ma cosa significa "non può cambiare" significa davvero qui. Significa semplicemente che non puoi svolgere un compito per i membri dei dati della classe.

Tuttavia, puoi eseguire altre operazioni indirette come inserire una voce in una mappa come mostrato nell'esempio. Permettendo che questo possa sembrare che questa funzione const stia modificando l'oggetto (sì, lo fa in un certo senso), ma è permesso.

Quindi, il vero significato è che una funzione membro const non può eseguire un assegnamento per le variabili dei dati di classe. Ma può fare altre cose come spiegato nell'esempio.

funzione membro costante

#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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow