Virtual bazaviy sinflar
- USUL : class C : public virtual A { }; Eslatma
Download 143.71 Kb.
|
mustaqil Ish
2- USUL :
class C : public virtual A { }; Eslatma: virtual kalit so’zi komponentalardan oldin yoki keyin yozilishi mumkin. Endi ma'lumotlar/funktsiya a'zosining faqat bitta nusxasi C sinfiga va B sinfiga ko'chiriladi va A klassi virtual tayanch sinfga aylanadi. Virtual tayanch sinflar bo'sh joyni tejash va bir nechta merosdan foydalanadigan sinf iyearxiyasidagi noaniqliklardan qochish usulini taklif qiladi. Agar asosiy sinf virtual baza sifatida belgilangan bo'lsa, u ma'lumotlar a'zolarini takrorlamasdan bir necha marta bilvosita baza sifatida harakat qilishi mumkin. Uning ma'lumotlar a'zolarining bitta nusxasi virtual bazadan foydalanadigan barcha asosiy sinflar tomonidan taqsimlanadi. #include < iostream >
using namespace std;
class A {
public:
int a;
A() // constructor
{
a = 10;
}
};
class B : public virtual A {
};
class C : public virtual A {
};
class D : public B, public C {
};
int main()
{
D object ; // object creation of class d
cout << "a = " << object.a << endl ;
return 0;
}
NATIJA : a = 10 Izoh: A sinfida umumiy bo'lgan faqat bitta ma'lumot a'zosi mavjud. Bu sinf B va C sinflarida deyarli meros bo'lib qolgan. Endi B sinfi va C sinfi virtual tayanch sinfga aylanadi va A ma'lumotlar elementining takrorlanishi amalga oshirilmaydi. 2- USUL #include using namespace std; class A { public: void show() { cout << "Hello from A \n"; } }; class B : public virtual A { }; class C : public virtual A { }; class D : public B, public C { }; int main() { D object; object.show(); } NATIJA : Hello from A Biz bu dasturda B va C classga A classni virtual class qilib yukladik. D classga esa B va C classdan meros oldik. Natijada A class D classga ham virtual class vazifasini bajaradi. Download 143.71 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling