Ob’ekt- nomi . Element - nomi.
Sinf elementlari sinfga tegishli funksiyalarida ishlatilishidan oldin ta’riflangan bo‘lishi shart emas. Xuddi shunday bir funksiyadan xali ta’rifi berilmagan ikkinchi funksiyaga murojaat kilish mumkin.
Komponentalarga murojaat xukuklari. Komponentalarga murojaat xuquqi murojaat spetsifikatorlari yordamida boshkariladi. Bu spetsifikatorlar:
Using namespace std;
Class employee
{
Public:
Long employee_id;
Float salary;
Void show_employee(void)
{
Cout<<»Nomer: «<Cout<<»Maosh: «<};
};
Int main()
{
Employee worker, boss;
Worker.employee_id = 12345;
Worker.salary = 25000;
Boss.employee_id = 101;
Boss.salary = 101101.00;
Cout<<»\n»<<»ishchi»<Worker.show_employee();
Cout<<»\n»<<»boss»<.show_employee();
Return 0;
}
Komponenta funksiya ta’rifi. Komponenta funksiya albatta sinf tanasida ta’riflangan bo‘lishi lozim. Global funksiyalardan farqli komponenta funksiya sinfning hamma komponentalariga murojat qilishi mumkin. Funksiyaning faqat prototipi emas to‘la ta’rifi sinf tanasida joylashgan bo‘lsa, bu funksiya joylashtiruvchi (inline) funksiya hisoblanadi. Ma’lumki inline funksiyalardassikllar, kalit bo‘yicha o‘tish operatori ishlatilishi mumkin emas. Bundan tashqari bunday funksiyalar rekursiv funksiya bo‘lolmaydi. Bu chegaralarni engish uchun sinf tanasiga faqat funksiya prototipi joylashtirilib, funksiyaning to‘la ta’rifi sinf tashqarisida dasturga kiruvchi boshqa funksiyalar bilan birga beriladi. Komponenta funksiyani sinf tashqarisida ta’riflanganda, qaysi sinfga tegishli ekanligini quyidagi shaklda ko‘rsatiladi:
Sinf-nomi :: Komponenta funksiya-nomi
Sinf tanasiga komponenta funksiya prototipi quyidagi shaklda joylashtiriladi:
Tip funksiya-nomi(formal-parametrlar-ta’rifi)
Sinf tashqarisida funksiya quyidagi shaklda ta’riflanadi:
Tip sinf-nomi :: funksiya-nomi(formal-parametrlar-spetsifikatsiyasi)
{ funksiya tanasi };
Oldingi misoldagi employee sinfida funksiya sinf ichida ta’riflangan. Bunday funksiya joylanuvchi (inline) funksiya deb qaraladi.
Funksiyani sinf tashqarisida ta’riflab sinf ichiga funksiya prototipini joylashtirish mumkin. Sinf ta’rifi bu holda quyidagi ko‘rinishda bo‘ladi:
Class employee
{
Public:
Long employee_id;
Float salary;
Void show_employee(void);
};
Har xil funksiyalar bir xil nomli funksiyalardan foydalanishi mumkin bo‘lgani uchun funksiya nomi sinf nomi va global ruxsat operatori belgisi (: qo‘yilishi lozim.
Void employee::show_employee(void)
{
Cout<<»Nomer: «<
Cout<<»Maosh: «<
};
Funksiya sinf tashqarisida ta’riflangan bo‘lsa ularni inline funksiya sifatida
};
Funksiya sinf tashqarisida ta’riflangan bo‘lsa ularni inline funksiya sifatida qarash uchun funksiya ta’rifida inline so‘zi aniq ko‘rsatilgan bo‘lishi kerak.
Quyidagi dastur show_employee funksiyasi ta’rifini sinf tashqarisiga joylashtiradi va inline so‘zi anik ko‘rsatiladi:
#include
Using namespace std;
Class employee
{
Public:
Long employee_id;
Float salary;
Void show_employee(void);
};
Inline void employee::show_employee(void)
{
Cout<<»Nomer: «<
Cout<<»Maosh: «<
};
Int main()
{
Employee worker, boss;
Worker.employee_id = 12345;
Worker.salary = 25000;
Boss.employee_id = 101;
Boss.salary = 101101.00;
Cout<<»\n»<<»ishchi»<
Worker.show_employee();
Cout<<»\n»<<»boss»<
Boss.show_employee();
Return 0;
}
KONSTRUKTORLAR. KONSTRUKTORLAR BU SINF KOMPONENTA FUNKSIYALARI BO‘LIB, OB’EKTLARNI 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
Konstruktorlar uchun qaytariluvchi tiplar, xatto void tipi ham ko‘rsatilmaydi. Dasturchi tomonidan ko‘rsatilmagan holda ham ob’ekt yaratilganda konstruktor avtomatik ravishda chaqiriladi.
Masalan ob’ekt complex cc; shaklida aniqlangan bo‘lsa, konstruktor avtomatik chaqirilib
Real va imag parametrlari avtomatik ravishda 0.0 qiymatlariga ega bo‘ladi.
Ko‘zda tutilgan holda parametrsiz konstruktor va quyidagi tipdagi nusxa olish konstruktorlari yaratiladi: T :: T (const T&)
Misol uchun
Class F
{…
Public : F(const T&)
…
}
Sinfda bir nechta konstruktorlar bo‘lishi mumkin, lekin ularning faqat bittasida parametrlar qiymatlari oldindan ko‘rsatilgan bo‘lishi kerak.
Konstruktor adresini hisoblash mumkin emas. Konstruktor parametri sifatida o‘z sinfining nomini ishlatish mumkin emas, lekin bu nomga ko‘rsatkichdan foydalanish mumkin.
Konstruktorni oddiy komponenta funksiya sifatida chakirib bo‘lmaydi. Konstruktorni ikki xil shaklda chaqirish mumkin :
Sinf_nomi .Ob’ekt_nomi (konstruktor_xaqiqiy_parametlari)
Sinf_nomi (konstruktor_xaqiqiy_parametlari)
Birinchi shakl ishlatilganda xaqiqiy parametrlar ro‘yxati bo‘sh bo‘lmasligi lozim. Bu shakldan yangi ob’ekt ta’riflanganda foydalaniladi:
Complex SS(10.3; 0.22)
// real=10.3; SS.imag= 0.22;
Complex EE (2.3)
// EE . real= 2.3;
EE.imag= 0.0;
Complex D() // xato
Konstruktorni ikkinchi shaklda chaqirish nomsiz ob’ekt yaratilishiga olib keladi. Bu nomsiz ob’ektdan ifodalarda foydalanish mumkin.
Misol uchun :
Complex ZZ= complex (4.0;5.0);
Bu ta’rif orkali ZZ ob’ekt yaratilib, unga nomsiz ob’ekt qiymatlari(real= 4.0; imag= 5.0) beriladi;
Konstruktor nomi sinf nomi bilan bir xil bo‘lishi lozimdir. Misol uchun siz employee sinfdan foydalansangiz, konstruktor ham employee nomga ega bo‘ladi