Programowanie obiektowe, C++
Metody stałe
[lekcja] 6. Metody stałe.Metody stałe
Zwykłe niestatyczne metody, jako potencjalnie modyfikujące zmienne składowe, nie mogą być wywoływane dla obiektów stałych:
class Klasa
{
int x;
public:
Klasa( int y )
: x( y )
{ }
int m()
{
return x;
}
};
int main()
{
const Klasa k( 64 );
k.m();
}
In function ‘int main()’:
error: passing ‘const Klasa’ as ‘this’ argument of ‘int Klasa::m()’ discards qualifiers [-fpermissive]
Metoda
m() nie modyfikuje składowej
x, ale i tak kompilator nie pozwala jej wywołać. Trzeba jawnie poinformować kompilator o tym, że ta metoda nie modyfikuje składowych. Służy do tego słowo kluczowe
const umieszczone po liście argumentów:
class Klasa
{
int x;
public:
Klasa( int y )
: x( y )
{ }
int m1() const
{
return x;
}
int m2() const;
};
int Klasa::m2() const
{
return x + 1;
}
int main()
{
const Klasa k( 64 );
k.m1();
}
Wszystkie teksty są chronione prawami autorskimi. Kopiowanie lub rozpowszechnianie treści poza niniejszym serwisem
jest zabronione.
Powyższe ograniczenie nie dotyczy autora opracowania, któremu przysługuje prawo do rozpowszechniania własnego tekstu wedle własnego uznania.