| | | | | | | | | | | | - Boshqa sinf (yoki main funksiya)
| | | | Misol. private murojaat orqali vorislik - class base {
- int i, j;
- public:
- void set(int a, int b) { i=a; j=b; }
- void show() { cout << i << " " << j << "\n";}
- };
- // asos sinfning public a’zolari, voris sinfda private huquqiga o’tadi.
- class derived : private base {….}
Davomi.. - int main()
- {
- derived ob(3);
- ob.set(1, 2); // error, set() metodiga ruxsat yo’q
- ob.show(); // error, show() metodiga ruxsat yo’q
- return 0;
- }
protected sinf a’zolariga murojaat - protected kalit so’zi vorislik mehanizmini tashkil qilish uchun ishlatiladi va qulaylik vujudga keltiradi.
- Asos sinfning private a’zolariga dasturning boshqa bir qismi (misol uchun boshqa sinf yoki main() funksiyasi) yoki voris sinf tomonidan to’g’ridan to’g’ri murojaat mavjud emas.
- Lekin asos sinfning protected a’zolari, boshqa sinf yoki main() funksiya uchun yopiq bo’ganiga qaramasdan, voris sinf tomonidan murojaat mavjuddir.
Misol. Asos sinfning protected a’zolari - class base {
- protected:
- int i, j; // asos sinf uchun private, lekin voris sinf uchun ochiq
- public:
- void set(int a, int b) { i=a; j=b; }
- void show() { cout << i << " " << j << "\n"; } };
- class derived : public base {
- int k;
- public:
- void setk() { k=i*j; } // i va j voris sinf uchun ochiq
- void showk() { cout << k << "\n"; } };
Davomi… - int main(){
- derived ob;
- ob.set(2, 3); // OK, voris sinf uchun ochiq, chunki public
- ob.show(); // OK, voris sinf uchun ochiq, chunki public
- ob.setk(); ob.showk(); // voris sinf metodi, murojaat turi public, demak ochiq
- return 0; }
Bir nechta sinflardan voris olish - Bir vaqtning o’zida bir nechta sinfdan voris olish mumkin.
- Masalan, voris sinf derived ikkita base1 va base2 lardan voris olyapti. Quyidagicha formada bir nechta sinfdan voris olish mumkin.
- class derived : public base-class1, public base-class2, …
Misol. Bittadan ko’p sinflardan voris olish - #include
- using namespace std;
- class base1 {
- protected:
- int x;
- public:
- void showx() {
- cout << x << "\n"; }
- };
- class base2 {
- protected:
- int y;
- public:
- void showy() {
- cout << y << "\n";}
- };
Davomi… - // ikkita sinfdan voris olinyapti.
- class derived: public base1, public base2 {
- public:
- void set(int i, int j) { x=i; y=j; } };
- int main(){
- derived ob;
- ob.set(10, 20); // voris sinf obyekti
- ob.showx(); // birinchi (base1) sinf metodi
- ob.showy(); // ikkinchi (base2) sinf metodi
- return 0; }
Vorislikda konstruktor va destruktorlar - Voris sinf obyekti yaratilganda, voris va asos sinf konstruktor va destruktorlari quyidagi ketma-ketlikda faoliyatda bo’ladi?
- C++ da, voris sinf obyekti yaratilganda:
- birinchi, asos sinf konstruktori chaqiriladi.
- ikkinchi, voris sinf konstruktori chaqiriladi.
- uchinchi, voris sinf destruktori chaqiriladi.
- va nihoyat, asos sinf destruktori chaqirilad.
Misol - class base {
- public:
- base() { cout << "Constructing base\n"; }
- ~base() { cout << "Destructing base\n"; }
- };
- class derived: public base {
- public:
- derived() { cout << "Constructing derived\n"; }
- ~derived() { cout << "Destructing derived\n"; }
- };
Davomi… - int main()
- {
- derived ob;
- // boshqa bironta kodlar ketma-ketligi
- return 0;
- }
- Constructing base
- Constructing derived
- Destructing derived
- Destructing base
Xulosa - Vorislik ning 4 ta turi mavjud:
- public turidagi vorislik.
- protected turidagi vorislik.
- private turidagi vorislik.
- auto turidagi vorislik.
- auto turidagi vorislik yozilmaydi. Uning o’rniga private olinadi.
- MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI
- Mallayev Oybek
- Usmonqulovich
- E’TIBORINGIZ UCHUN RAHMAT!
Do'stlaringiz bilan baham: |