Junior
Sabit və qeyri-sabit metodlər haqqında nə bilirsiniz?
sobes.tech Süni İntellekt
AI-dan cavab
C++-də sabit metodlar (const methods), parametr siyahısından sonra const açar söz ilə elan olunan sinif metodlarıdır.
class MyClass {
public:
void nonConstMethod(); // Non-sabit metod
void constMethod() const; // Sabit metod
};
Parametr siyahısından sonra const açar sözü, metodun çağırıldığı obyektin vəziyyətini dəyişməyəcəyini təmin edir. Bu, sabit metod daxilində:
- Obyektin statik olmayan məlumat üzvlərinin dəyişdirilməməsinə imkan verir.
- Yalnız eyni obyektin digər sabit metodlarını çağırmağa imkan verir.
Sabit metodların məqsədi:
- Təhlükəsizlik: Təsadüfi vəziyyət dəyişikliklərinin qarşısını alır.
- Sabit obyektlərlə istifadə:
constilə elan olunan sabit obyektlər yalnız sabit metodları çağıra bilər. Sabit olmayan metodlar onlara əlçatan deyil. - Yüklenmə: Metodlar, sabitlik baxımından yüklənə bilər. Bu, eyni ad və parametr imzasına malik iki metodun olmasına imkan verir, biri sabit və digəri deyil. Kompilyator, çağırışın sabit və ya qeyri-sabit obyekt üzərində olub-olmadığına görə uyğun versiyanı seçəcək.
class MyClass {
int value;
public:
int getValue() const { // Sabit versiya
return value;
}
int getValue() { // Qeyri-sabit versiya
return value++; // Vəziyyəti dəyişdirmək imkanı
}
};
void test(const MyClass& objConst, MyClass& objNonConst) {
objConst.getValue(); // const versiya çağırılır
objNonConst.getValue(); // non-const versiya çağırılır
}
Qeyri-sabit metodlar:
Bu, sinifin adi metodlarıdır və obyektin vəziyyətini dəyişə bilər. Onlar parametr siyahısından sonra const açar sözü olmadan elan edilir.
İstifadə:
| Ob'ekt tipi | Metod çağırışı | Hansı metod çağırılacaq | İzah |
|---|---|---|---|
const T |
obj.method() |
Yalnız sabit metod | Sabit obyektin vəziyyəti dəyişdirilə bilməz. |
T |
obj.method() |
Qeyri-sabit metod | Vəziyyəti dəyişə bilər. |
T |
obj.method() const |
Sabit metod | Əgər hər iki versiya mövcuddursa və qeyri-sabit obyekt üzərində çağırılırsa, prioritet qeyri-sabit versiyaya verilir. Ancaq, obyektə açıq cast etmək mümkündür, əgər sabit versiyanı çağırmaq istəyirsinizsə (nadirdir). |
Sabitlikdən istifadə yaxşı təcrübədir, çünki bu, kodun oxunaqlığını və təhlükəsizliyini artırır, həmçinin, kompilyatora əlavə optimizasiyalar etməyə imkan verir.