İlk biçim Circle
, copy()
işlevin parametresi olan referansa bağlı nesnenin (durumunun) bu referansla değiştirilmeyeceği copy()
anlamına gelir. Referans bir referanstır const
, bu nedenle Circle
kendileri olarak nitelendirilmemiş üye işlevlerini bu referans aracılığıyla çağırmak mümkün olmayacaktır const
.
İkinci form, diğer taraftan, yasadışı: Sadece üye fonksiyonları olabilir const
ulaşım kolaylığı (ne bildiriyorlar küresel varken,friend
fonksiyonu).
Bir const
üye işlevi nitelendirdiğinde, niteleme örtük this
argümanı ifade eder . Başka bir deyişle, bu işlevin çağrıldığı nesnenin durumunu (örtük this
işaretçi tarafından gösterilen nesne) değiştirmesine izin verilmeyecektir - istisnamutable
nesneler , ama bu başka bir hikaye.
Kodla söylemek için:
struct X
{
void foo() const
{
_x = 42;
_y = 42;
}
void bar(X& obj) const
{
obj._x = 42;
_x = 42;
}
void bar(X const& obj)
{
obj._x = 42;
obj._y = 42;
_x = 42;
}
int _x;
mutable int _y;
};