Konstruktorlar bu sinf komponenta funksiyalari bo‘lib, obyektlarni avtomatik initsializatsiya qilish uchun ishlatiladi. Konstruktorlar ko‘rinishi quyidagicha bo‘lishi mumkin:
Sinf nomi (formal parametrlar ro‘yxati)
{
//konstruktor tanasi
}
Bu komponenta funksiya nomi sinf nomi bilan bir xil bo‘lishi lozim. Misol uchun complex sinfi uchun konstruktorni quyidagicha kiritish mumkin:
complex (double re = 0.0; double im = 0.0 )
{real=re; imag=im;}
Konstruktorlar uchun qaytariluvchi tiplar, xatto void tipi ham ko‘rsatilmaydi. Dasturchi tomonidan ko‘rsatilmagan holda ham obyekt yaratilganda konstruktor avtomatik ravishda chaqiriladi.
Masalan obyekt complex cc; shaklida aniqlangan bo‘lsa, konstruktor avtomatik chaqirilib, real va imag parametrlari avtomatik ravishda 0.0 qiymatlariga ega bo‘ladi.
Berilgan sinf obyektini yaratish konstruktor deb nomlanuvchi maxsus funksiya - a’zo tomonidan, o‘chirish esa destruktor deb nomlanuvchi maxsus funksiya – a’zo orqali amalga oshiriladi. Sinf ichki berilganlarga murojaatni cheklab qo‘yishi mumkin. Cheklov berilganlarni ochiq (public), yopiq (private) va himoyalangan (protected) deb aniqlaydi.
40. Destruktorni misollar yordamida tushuntiring.
Sinfning biror obyekti uchun ajratilgan xotira obyekt yo‘qotilgandan so‘ng bo‘shatilishi lozimdir.
Sinflarning maxsus komponentalari destruktorlar, bu vazifani avtomatik bajarish imkonini yaratadi.
Destruktorni standart shakli quyidagicha :
~ sinf_nomi ( ) {destruktor tanasi}
Destruktor parametri yoki qaytariluvchi qiymatga ega bo‘lishi mumkin emas (xatto void tipidagi).
Agar sinfda oshkor destruktor mavjud bo‘lmasa, ko‘zda tutilgan destruktor chaqiriladi.
Dastur obyektni o‘chirganda destruktor avtomatik chaqiriladi.
Misol:
#include
using namespace std;
class Person{
public:
Person (){
cout<<"Yaratidi"<
}
~Person (){
cout<<"O'chirldi"<
};
int main() {
Person work;
int kk; cin>>kk;
return 0;
}
Natija
Yaratidi
O'chirldi
Ma’lumotlar elementidan birgalikda foydalanish. Odatda, ma’lum sinf obyektlari yaratilayotganda, har bir obyekt o‘z-o‘zining ma’lumotlar elementlari to‘plamini oladi. Biroq shunday hollar ham yuzaga keladiki, unda bir xil sinflar obyektlariga bir yoki bir nechta ma’lumotlar elementlaridan (statik ma’lumotlar elementlaridan) birgalikda foydalanish kerak bo‘lib qoladi. Bunday hollarda ma’lumotlar elementlari umumiy yoki juz’iy deb e’lon qilinadi, keyin esa tur oldidan, quyida ko‘rsatilganidek, static kalit-so‘z keladi:
private;
static int shared_value;
Sinf e’lon qilingach, elementni sinfdan tashqaridagi global o‘zgaruvchi sifatida e’lon qilish kerak. Bu quyida shunday ko‘rsatilgan:
int class_name::shared_value;
Navbatdagi dastur book_series sinfini aniqlaydi. Bu sinf (seriya)ning barcha obyektlari (kitoblari) uchun bir xilda bo‘lgan page_count elementidan birgalikda foydalanadi. Agar dastur ushbu element qiymatini o‘zgartirsa, bu o‘zgarish shu ondayoq barcha sinf obyektlarida o‘z aksini topadi:
41. This ko’rsatkichidan foydalanish?
Do'stlaringiz bilan baham: |