Konstruktorlar va kuzda tutilgan qiymatlar
Konstruktorlarda kuzda tutilgan qiymatlardan ham foydalanish mumkindir. Misol uchun
qo’yidagi konstruktor employee oklad qiymatini dasturda ko’rsatilmagan bo’lsa 10000.0 teng
qilib oladi.:
employee::employee(char *name, long employee_id, float salary = 10000.00)
{
strcpy(employee::name, name);
employee::employee_id = employee_id;
if (salary < 50000.0)
employee::salary = salary;
else // Nedopustimihy oklad
employee::salary = 0.0;
Destruktorlar
Sinfning biror ob'ekti uchun ajratilgan hotira ob'ekt yo’qotilgandan so’ng bo’shatilishi
lozimdir. Sinflarning mahsus komponentalari destruktorlar, bu vazifani avtomatik bajarish
imkonini yaratadi.
Destruktorni standart shakli qo’yidagicha :
~ sinf_nomi ( ) {destruktor tanasi}
Destruktor parametri yoki qaytariluvchi qiymatga ega bo’lishi mumkin emas. (hatto void
tipidagi)
Statik elementlar. sinf statik kompanentalari.
Sinf kompleks ob'ektlari uchun umumiy bo’lgan elementlar statik elementlar deb ataladi.
Yangi ob'ektlar yaratilganda statik elementlarga murojat qilish uchun oldin inizializatsiya
qilinishi lozim. Inizializatsiya qo’yidagicha amalga oshiriladi:
Sinf-nomi:: kompleks-nomi initsializator
Misol uchun skladdagi tovarni kompleks tasvirlovchi sinfni kurib chiqamiz. Bu sinf
komponentalari qo’yidagilardan iborat:
- Tovar nomi
- Olish narhi
- Kushimcha narh foiz ko’rinishida
- Tovar haqida ma'lumotlar kiritish funktsiyasi
- Tovar haqida ma'lumotlar va Tovar narhini chiqaruvchi funktsiya;
Sinf ta'rifi :
Goods. Cpp
#include
Struct goods
{ char name [40];
float price;
Static int percent;
Void input()
{cout <<” Tovar nomi:”; cin>>name;
cout<<” Tovar narhi:”;cin>>price;
}
Har bir yangi ob'ektning kompanentalari faqat shu ob'ektga tegishli bo’ladi. Sinf
kompanentasi yagona bo’lib va hamma yaratilgan ob'ektlar uchun umumiy bo’lishi uchun uni
statik element sifatida ta'riflash ya'ni
Static
atributi orqali ta'riflash lozimdir. S sharning statik
kompanentalarini inizializatsiya qilishdan so’ng dasturda ob'ektlarni kiritmasdan oldin ishlatish
mumkin. Agar kompanenta
private
yoki
protected
sifatida ta'riflangan bo’lsa unga kompanenti
funktsiya yordamida murojat qilish mumkin. Lekin kompaneta funktsiyaning chaqirish uchun
biror ob'ekt nomini ko’rsatish lozim. Lekin statik kompanentaga murojat qilinayotgan birorta
ob'ekt yaratilmagan bo’lishi yoki bir nechta ob'ektlar yaratilgan bo’lishi mumkin shuning uchun
sinf statik elemntlariga ob'ekt nomini ko’rsatmasdan murojat qilish imkoniyatiga ega. Bunday
imkoniyatni statik kompanenta funktsiyalar yaratadi. Statik kompanenta funktsiyaga ob'ekt nomi
yoki obe'ktga ko’rsatkich orqali murojaat qilish mumkin. Shu bilan birga nomi orqali
qo’ydagicha murojaat qilish mumkin.
Sinf - nomi: Statik – funktsiya –nomi
Qo’yidagi dasturda point sinfi uch o’lchovli fazodagi nuqtani aniqlaydi va shu bilan birga
o’z ichiga shu nuqtalar sonini oladi.
# include
clearr point 3
{double x,y,z;
static int N;
public
point 3 (double xu=0.o,double yu=0.o, double zu=0.o)
{N + +; x=xn; y=yn; z=zn; }
static int & count ( ) {return N; }
};
int point 3: :N=0;
void main (void)
{cout < <”\ n size of ( point 3)=” < < size of (point 3) ;
point 3 A (0: 0, 1. 0, 2. 0);
cout < < “ \ nsize of (A)=”< < size of (A)
point 3 B (3.0, 4.0, 5.0)
Do'stlaringiz bilan baham: |