Wykonywanie metody const
pozwoli, aby obiekt klasy Contant zadzwonił do tej klasy. ponieważ ta metoda nie może zmienić żadnego z elementów obiektu (błąd kompilatora).
Warto wspomnieć, że const
jest częścią sygnatury metody, więc w tej samej klasie możesz mieć dwie metody tego samego prototypu, ale jedna jest const, a druga nie. W takim przypadku, jeśli wywołasz metodę przeciążoną z obiektu zmiennego, wywoływana jest metoda inna niż const, a jeśli wywołasz ją z obiektu stałego, wywoływana jest metoda const
.
Jednakże, jeśli masz tylko metodę const
(nie ma ona stałego przeciążenia), to wywoływana jest zarówno z obiektu zmiennego, jak i stałego.
np
#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;
}
wyświetli:
1
0
Press any key to continue . . .
możliwe duplikat [C++ const zastosowania w sposobach klasa] (http://stackoverflow.com/questions/5346695/c-const -użyteczne-w-klasie-metody) (i wiele innych!) – Johnsyweb