obyektlar ro‘yxati> qismi shart emas. Sinf obyektlari keyinchalik, zarurat bo‘yicha e’lon qilinishi mumkin. Garchi <sinf nomi> qismi ham majburiy bo‘lmasa ham, uning bo‘lgani ma’qul. Chunki <sinf nomi> berilganlar turining yangi nomi bo‘lib, uning yordamida shu sinf obyektlari aniqlanadi.
Sinf ichida e’lon qilingan funksiya va berilganlar shu sinf a’zolari hisobalandi. Sinf e’lonining ichida e’lon qilingan o‘zgaruvchilar berilgan-a’zolar, sinf ichida e’lon qilingan funksiyalar funksiya–a’zolar deyiladi.
Sinf obyektlariga murojaat
Odatda sinf tavsifida <obyektlar ro‘yxati> qismi shart emas. Sinf obyektlari keyinchalik, zarurat bo‘yicha e’lon qilinishi mumkin. Garchi <sinf nomi> qismi ham majburiy bo‘lmasa ham, uning bo‘lgani ma’qul. Chunki <sinf nomi> berilganlar turining yangi nomi bo‘lib, uning yordamida shu sinf obyektlari aniqlanadi.
Sinf ichida e’lon qilingan funksiya va berilganlar shu sinf a’zolari hisobalandi. Sinf e’lonining ichida e’lon qilingan o‘zgaruvchilar berilgan-a’zolar, sinf ichida e’lon qilingan funksiyalar funksiya–a’zolar deyiladi.
Masala
Merosdan foydalanib, biz funktsiyalarni uch marta emas, faqat bir marta yozishimiz kerak, chunki qolgan uchta sinfni asosiy sinfdan (Vehicle) meros qilib oldik.
C++ da merosni amalga oshirish: Asosiy sinfdan meros bo'lib qolgan kichik sinfni yaratish uchun biz quyidagi sintaksisga amal qilishimiz kerak.
Hosil bo'lgan sinflar: Hosil bo'lgan sinf asosiy sinfdan olingan sinf sifatida aniqlanadi.
Sintaksis:
sinf :
//tana }
Qayerda
class — yangi sinf yaratish uchun kalit so'z
derived_class_name - asosiy sinfni meros qilib oladigan yangi sinf nomi
kirish-spesifikatori - shaxsiy, ommaviy yoki himoyalangan. Agar hech biri belgilanmagan bo'lsa, PRIVATE sukut bo'yicha qabul qilinadi
base-class-name — asosiy sinf nomi
Eslatma: Olingan sinf shaxsiy ma'lumotlar a'zolariga kirish huquqini meros qilib olmaydi. Biroq, u o'sha sinf e'lon qilgan har qanday shaxsiy a'zolarni o'z ichiga olgan to'liq ota-ona ob'ektini meros qilib oladi.
Misol:
1. sinf ABC : xususiy XYZ //xususiy derivatsiya
{ }
2. ABC sinfi : ommaviy XYZ // ommaviy kelib chiqish
{ }
3. sinf ABC : himoyalangan XYZ // himoyalangan derivatsiya
{ }
4. ABC klassi: XYZ //sukut bo'yicha xususiy derivatsiya
{ }
Eslatma:
o Asosiy sinf olingan sinf tomonidan xususiy meros bo'lib qolganda, asosiy sinfning umumiy a'zolari hosila sinfning shaxsiy a'zolariga aylanadi va shuning uchun asosiy sinfning umumiy a'zolariga faqat olingan sinfning a'zo funktsiyalari orqali kirish mumkin. Ulardan olingan sinf ob'ektlariga kirish mumkin emas.
o Boshqa tomondan, asosiy sinf hosila sinf tomonidan ommaviy ravishda meros bo'lib qolganda, asosiy sinfning ochiq a'zolari ham hosila sinfning umumiy a'zolariga aylanadi. Shuning uchun, asosiy sinfning umumiy a'zolariga olingan sinf ob'ektlari, shuningdek, hosila sinfning a'zo funktsiyalari orqali kirish mumkin.
// Misol: sinf ichida argumentsiz a'zo funktsiyasini aniqlang
#include
Using namespace std ;
class odam{
int id;
belgi nomi[100];
public:
void set_p(){
cout<<"Idni kiriting:";
cin>>id;
fflush (stdin);
cout<<"Ismni kiriting:";
cin.get(ism,100);}
void display_p(){
cout<}};
class o'quvchi: xususiy shaxs{
char kursi[50];
int to'lovi;
public:
void set_s(){
set_p();
cout<<"Kurs nomini kiriting:";
fflush (stdin);
cin.getline (kurs, 50);
cout<<"Kurs to'lovini kiriting:";
cin>> to'lovi;}
void display_s(){
display_p();
cout<}};
main(){
Talabalar;
s.set_s();
s.display_s();
return 0;}
Chiqish:
Identifikatorni kiriting: 101
Ismni kiriting: Dev
Kurs nomini kiriting: GCS
Kurs to'lovini kiriting: 70000
101 Dev GCS 70000
// Misol: sinfdan tashqarida argumentsiz a'zo funktsiyasini aniqlang
#include
using namespace std ;
class odam{
int id;
char nomi[100];
public:
void set_p();
void display_p(); };
void Person::set_p(){
cout<<"Idni kiriting:";
cin>>id;
fflush (stdin);
cout<<"Ismni kiriting:";
cin.get(ism,100);}
void Person::display_p(){
cout<class o'quvchi: xususiy shaxs{
char kursi[50];
int to'lovi;
public:
void set_s();
void display_s();};
void Student::set_s(){
set_p();
cout<<"Kurs nomini kiriting:";
fflush (stdin);
cin.getline (kurs, 50);
cout<<"Kurs to'lovini kiriting:";
cin>> to'lovi;}
void Student::display_s(){
display_p();
cout<<"\t"<int(){
Talabalar;
s.set_s();
s.display_s();
qaytish 0;}
Chiqish:
Idni kiriting: Ismni kiriting: Kurs nomini kiriting: Kurs to'lovini kiriting:
0 t 0
|