+ turdosh sinflar uchun umumiy harakatlarni belgilash uchun bitta nomdan foydalanishga ruxsat berishni anglatadi
Download 0.49 Mb.
|
Дастурлаш 2 ўзб
template<class T>
class Val{ public: T val; Val operator ++(){ val ++; return *this; } }; template<> class Val<char>{ public: char val; Val operator ++(){ val = (val - 96) % 26 + 97; return *this; } }; int main(){ Val<int>a; Val<char>b; a.val = 5; b.val = 'x'; for(int i = (++a).val; i > 0; i --) cout << (++b).val; return 0; } + yzabcd = xyzabc = xyz{|} = yz{|}~ ? Quyidagi dastur qismiga n soniga 10 kiritilsa dastur natijasini chop eting int get(int n){ return n < 2 ? n : get(n-1) + get(n-2); } int main(){ int n; cin >> n; cout << get(n); return 0; } + 55 = 34 = 21 = 13 ? Meros klass konstruktorini yaratishda: + Voris sinfi uchun konstruktor yaratishda u merosxo'r sinf nomi bilan bir xil nomga ega bo'lishi kerak. = Merosli sinf uchun konstruktor yaratishda u asosiy sinf nomi bilan bir xil nomga ega bo‘lishi kerak = Voris sinfini yaratganingizda, konstruktor yaratilmaydi. Voris sinfi konstruktori asosiy sinfning xossasi sifatida qabul qilinadi = Barcha javoblar to'g'ri ? Polimorfizm quyidagi mexanizm orqali amalga oshiriladi: + funksiyalarni qayta yuklash, merosxo’rlik , virtual funksiyalar = funksiyalarni qayta yuklash, metodlarni vorislik bilan yuborish, qoliplar = usullarni meros qilish , virtual funksiyalar, qoliplar = yuklash funksiyalari qayta yuklash, virtual funksiyalar, qoliplar ? Funksiyalar virtual deb ataladi: + Asosiy sinfdan olingan voris sinfda qayta aniqlanishi mumkin bo'lgan funksiyalar = olingan sinfda ishlatilmaydigan asosiy sinf funksiyalari; = asosiy sinfda bekor qilib bo'lmaydigan asosiy sinf funksiyalari; = asosiy sinfda bekor qilib bo'lmaydigan asosiy sinf funksiyalari ? Quyidagi dastur qismi to’g’ri ishlashi uchun dasturchi tomonidan tuzilgan Complex sinfi ichida qaysi operator overload qilingan bo’lishi kerakligini aniqlang class Complex{ public: int real, imag; Complex(int real, int imag):real(real), imag(imag){} // operator overload uchun joy }; int main(){ Complex a(3, 4); a = -a; cout << a.real << ' ' << a.imag; return 0; } + Complex operator -() = Complex operator —-() = Complex operator -(Complex a) = Complex friend operator -(Complex a, Complex b) ? Do'st funksiya bu - + friend atributiga ega sinfda e'lon qilingan funksiya, lekin sinf a'zosi bo’lmagan = argumentlari orasida ushbu sinfning elementlari mavjud bo'lgan boshqa sinfning funksiyasi = sinf a'zosi bo'lgan va do'st atributi bilan e'lon qilingan funksiya = boshqa sinfda bu funksiyaga mos deb e'lon qilingan funksiya ? Meros klass konstruktorini yaratishda: + Voris sinfi uchun konstruktor yaratishda u merosxo'r sinf nomi bilan bir xil nomga ega bo'lishi kerak. = Merosli sinf uchun konstruktor yaratishda u asosiy sinf nomi bilan bir xil nomga ega bo‘lishi kerak = Voris sinfini yaratganingizda, konstruktor yaratilmaydi. Voris sinfi konstruktori asosiy sinfning xossasi sifatida qabul qilinadi = Barcha javoblar to'g'ri ? Agar asosiy sinf va merosxo'r sinf o'rtasidagi murojat private bo'lsa, nima bo'ladi: + Asosiy sinfning protected va public xususiyatlari va usullari merosxo'r sinf uchun private bo'ladi. = Asosiy sinfning protected xususiyatlari va usullari merosxo'r sinf uchun public bo'ladi = Asosiy sinfning public xususiyatlari va usullari merosxo'r sinf uchun protected bo'ladi = Asosiy sinfning public xususiyatlari va usullari merosxo'r sinf uchun public bo'ladi. ? Bir nechta sinflardan meros olish jarayonini ko'rsating. + class Derived: Access Base_1, Access Base_2, …{ }; = class Base_1, Base_2, …:Access Derived{}; = class Derived: Access Derived_2: Access:Base{}; = class Derived:{ Access Base1, Base2, …}{ }; ? Vorislik bu- + Bir ob'ekt boshqa ob'ektning xossalari va usullarini oladi, ya'ni bir sinf boshqa sinfdan meros oladi.Birinchi sinfning barcha atributlari va usullari ikkinchi sinfga o'tadi. = Ob'ektlar tashqi omil ta'siridan himoyalanmagan, ya'ni ob'ektning o'zi boshqa ob'ektlarga tegishli, huquqlar berilmaydi. = Kirish huquqlari har doim ochiq bo'lgan yangi yaratilgan sinf. = Ob'ektlarni boshqa ob'ektga ko'chiradi ? To'plamli vorislik … uchun qo'llaniladi. + Voris sinfni ikkita va undan ortiq ota sinf xususiyatlari bilan ta'minlash. = Shablonlarni bir nechta bazaviy (ota) sinflari bilan ta'minlash. = Bir nechta shablon sinfni bazaviy (ota) sinflari bilan ta'minlash uchun. = Algoritmni u bilan ishlaydigan konkret ma'lumot turlaridan ajratish. ? #include using namespace std; class A{ private: int a = 25; int funk_1() { return a -10; } int funk_2() { return a*a; } public: int display() { return funk_1() + funk_2(); } }; class B:public A{ public: void result() { cout << " Result: " << display(); } }; int main() { B x; x.result(); } Ushbu dasturni bajarish jarayonida qanday natija ko'rsatiladi. + Result: 640 = Result: 625 = Result: 15 = Result: 40 ? Quyidagi dastur natijasini aniqlang #include using namespace std; template class Val{ public: T val; Val operator ++(){ val ++; return *this; } }; template<> class Val public: char val; Val operator ++(){ val = (val - 96) % 26 + 97; return *this; } }; int main(){ Val Val a.val = 6; b.val = 'v'; for(int i = (++a).val; i > 0; i --) cout << (++b).val; return 0; } + wxyzabc = vwxyzab = vwxyz{| = wxyz{|} ? Ushbu dasturni bajarish jarayonida qanday natija ko'rsatiladi. #include using namespace std; class A { public: A() { f(); } virtual void f() { cout << "A::f"; } }; class B : public A { public: void f() { cout << "B::f"; } }; int main( ) { A * a = new B(); delete a; return 0; } + A::f = B::f = А = f ? Quyidagi dasturda n soniga 9 kiritilsa dastur natijasini chop eting #include using namespace std; int get(int n){ return n < 2 ? n : get(n-1) + get(n-2); } int main(){ int n; cin >> n; cout << get(n); return 0; } + 34 = 55 = 21 = 13 ? Funksiyani qayta aniqlashga nisbatan quyidagi fikrlardan qaysi biri noto‘g‘ri + Funksiyani faqat bir marta qayta aniqlash mumkin. = Qayta aniqlangan funksiya bir xil qaytish turiga va bir xil parametrlar ro'yxatiga ega bo'lishi kerak. = Qayta aniqlangan funktsiyani sinf ichida bajarib bo'lmaydi. = Statik funktsiyani bekor qilib bo'lmaydi ? To'g'ri mulohozani tanlang: + do'stona funksiya sinf ichida e'lon qilinadi, sinf elementlariga murojat qilish imkoni mavjud bo’ladi = do'st funksiya oddiy funktsiya bo'lishi mumkin emas, faqat boshqa sinfning usuli = bitta funktsiya ko'p sinfga do’st bo’lishi mumkin = do'st funktsiya boshqa sinf metodi bo'lishi mumkin emas ? Agar asosiy sinf va merosxo'r sinf o'rtasidagi murojatlar public bo'lsa, unda nima bo'ladi: + Asosiy sinfning protected va public xususiyatlari va usullari mod ravishda merosxo'r sinf uchun protected va public bo'ladi. = Asosiy sinfning public va private xususiyatlari va usullari merosxo'r sinf uchun public bo'ladi = Asosiy sinfning protected va public xususiyatlari va usullari merosxo'r sinf uchun private bo'ladi. = Asosiy sinfning protected xususiyatlari va usullari merosxo'r sinf uchun public bo'ladi. ? #include using namespace std; class Inkapsulyatsiya { private: int x; public: void set(int a) { x =a; } int get() { return x; } }; int main() { Inkapsulyatsiya obekt; obekt.set(15); cout< } Ushbu dasturni bajarish jarayonida qanday natija ko'rsatiladi. + 15 = A = set() = set(15) ? Agar merosxo'r sinfini yaratishda asosiy sinfga murojaat qilishda kirish darajasi (Kirish) ko'rsatilmagan bo'lsa, u holda qaysi kirish darajasi ishlaydi + Private = Protected = Public = Kirish darajasi belgilanishi kerak ? Quyidagi dastur qismi natijasini aniqlang. Download 0.49 Mb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling