Fare un metodo const
consentirà a un oggetto contant della classe di chiamarlo. perché questo metodo non può modificare alcun membro dell'oggetto (errore del compilatore).
Potrebbe essere utile ricordare che const
è una parte della firma del metodo, quindi nella stessa classe si possono avere due metodi dello stesso prototipo ma uno è const e l'altro no. In questo caso, se si chiama il metodo sovraccarico da un oggetto variabile, viene chiamato il metodo non-const e, se lo si chiama da un oggetto costante, viene chiamato il metodo const
.
Tuttavia, se si dispone solo di un metodo const
(non esiste un sovraccarico non costante di esso), viene chiamato sia dall'oggetto variabile che da quello costante.
Per esempio:
#include <iostream>
using std::cout;
class Foo
{
public:
bool Happy;
Foo(): Happy(false)
{
// nothing
}
void Method() const
{
// nothing
}
void Method()
{
Happy = true;
}
};
int main()
{
Foo A;
const Foo B;
A.Method();
cout << A.Happy << '\n';
B.Method();
cout << B.Happy << '\n';
return 0;
}
Will uscita:
1
0
Press any key to continue . . .
fonte
2011-03-18 03:40:37
possibile duplicato del [C++ uso const in metodi di classe] (http://stackoverflow.com/questions/5346695/c-const -use-in-class-methods) (e numerosi altri!) specificatore – Johnsyweb