POLIMORFIZM VA MERSOXO’RLIK Obyektga yo’naltirilgan dasturlash mavjud sinfdan yangi sinfni chaqirish imkonini ________ beradi.
Quyidagi izohlarning qaysi biri to’g’ri?
A.Merosxo’r sinf asosiy sinfning bir qismidir.
B. Merosxo’r sinf odatda uning asosiy sinfiga qaraganda ko'proq funksiyalar va batafsil ma'lumotni olish uchun kengaytiriladi.
C. "class A: public B".A sinfi B sinfidan meros olmoqda.
D. "class A: public B".B sinfi A sinfidan meros olmoqda
Quyidagi dasturdan qanday natija chop etiladi?
#include using namespace std;
class ParentClass
{
public:
int id;
ParentClass(int id)
{
this->id = id;
}
void print()
{
cout << id << endl;
}
};
class ChildClass: public ParentClass
{
public:
int id;
ChildClass(int id): ParentClass(1)
{
this->id = id;
}
};
int main()
{
ChildClass c(2);
c.print();
return 0;
}
Circle va Ractangle sinflari GeometricObject sinfidan meros olgan
void displayGeometricObject(GeometricObject shape){
cout << shape.toString() << endl;
}
Quyidagi javoblarning qaysi biri funksiyaga murojaatni ifodalaydi?
Konstruktor asosiy sinfdan meros oladimi?
Destruktor asosiy sinfdan meros oladimi?
A va B sinfi e’lon qilingan.A sinf B sinfdan meros oladi.A va B sinf konstruktorlari argumentga ega emas.B sinfdan A sinf konstruktorini chaqirish uchun_____ dan foydalanamiz.
Quyidagi dastur qanday natijani chop etadi?
#include using namespace std;
class B {
public:
~B()
{cout << "B";
}
};
class A: public B
{ public:
~A()
{ cout << "A";
}
};
int main()
{A a;
return 0;
}
Quyidagi dastur qanday hatolikni ko’rsatadi?
class Fruit
{ public:
Fruit(int id)
{ } };
class Apple: public Fruit
{ public:
Apple()
{ }
};
Quyidagi izohlarning qaysi biri to’g’ri?
A.Funksiya sinfga qayta yuklanishi mumkin.
B.Funksiya sinfda qayta e’lon qilinishi mumkin.
C.Agar funksiyaga boshqa bir funksiya qayta yuklansa, bu ikkala funksiya bir xil signaturada bo’ladi.
D. Agar funksiyaga boshqa bir funksiya e’lon qilinsa, bu ikkala funksiya bir xil signaturada bo’ladi.
GeometricObject sinfida Circle obyektini toString() funksiyasi orqali______ chaqiradi.
Quyidagi dastur qanday natijani ko’rsatadi?
#include using namespace std;
class C
{
public:
string toString()
{
return "C";
}
};
class B: public C
{
string toString()
{
return "B";
}
};
class A: public B
{
string toString()
{
return "A";
}
};
void displayObject(C* p)
{
cout << p->toString();
}
int main()
{
displayObject(&A());
displayObject(&B());
displayObject(&C());
return 0;
}
Quyidagi dastur qanday natijani ko’rsatadi?
#include using namespace std;
class C {
public:
virtual string toString() {
return "C";
}
};
class B: public C {
string toString()
{
return "B";
}
};
class A: public B {
string toString()
{
return "A";
}
};
void displayObject(C* p) {
cout << p->toString();
}
int main() {
displayObject(&A());
displayObject(&B());
displayObject(&C());
return 0;
}
Quyidagi dastur qanday natijani ko’rsatadi?
#include using namespace std;
class C
{
public:
string toString()
{
return "C";
}
};
class B: public C
{
string toString()
{
return "B";
}
};
class A: public B
{
virtual string toString()
{
return "A";
}
};
void displayObject(C* p)
{
cout << p->toString();
}
int main()
{
displayObject(&A());
displayObject(&B());
displayObject(&C());
return 0;
}
Quyidagi dastur qanday natijani ko’rsatadi?
#include using namespace std;
class C {
public:
virtual string toString() {
return "C";
}
};
class B: public C {
string toString() {
return "B";
}
};
class A: public B {
string toString() {
return "A";
}
};
void displayObject(C p) {
cout << p.toString(); }
int main() {
displayObject(A());
displayObject(B());
displayObject(C());
return 0;
}
Ushbu dastur natijasi qanday bo’ladi?
#include #include using namespace std;
class Person {
public:
void printInfo() {
cout << getInfo() << endl;
}
virtual string getInfo() {
return "Person";
}
};
class Student: public Person {
public:
virtual string getInfo() {
return "Student";
}
};
int main() {
Person().printInfo();
Student().printInfo();
}
Ushbu dastur natijasi qanday bo’ladi?
#include #include using namespace std;
class Person {
public:
void printInfo() {
cout << getInfo() << endl;
}
string getInfo() {
return "Person";
}
};
class Student: public Person {
public:
string getInfo() {
return "Student";
}
};
int main() {
Person().printInfo();
Student().printInfo();
}
Agar A sinf B sinfdan meros olsa va B virtual funksiyaga bo’lsa , bu funksiya dinamik ravishda bog'langan bo'ladimi?
Quyidagi izohlardan qaysi biri to’g’ri?
A. Agar funksiya virtual bazaviy sinf bo’lsa,a avtomatik tarzda barcha sinflar uchun virtual hisoblanadi.Virtual kalit so’zini joriy sinfning e’lon qilinga funksiyasi uchun qo’llash shart emas.
B. Agar funksiya sinfda qayta aniqlanmasa,u holda virtual kalit so’zini e’lon qilmasa dastur yanada samarali ishlaydi.
C. Virtual funksiya bir nechta snfda realizatsiya qilinishi mumkin,C++ funksiya ishlashi jarayonida havola etilgan o’zgatuvchida dinamik bog’lanishnini sinf obyektida aniqlaydi
D.Kompilyator parametr turiga, parametrlarning soniga va kompilyatsiya vaqtida parametrlarning tartibiga mos keladigan funksiyani topadi.
Quyidagi ta’riflarning qaysi biri to’g’ri?
A. Private a’zosi uchun faqat joriy sinf ichidan va boshqa sinf a’zolaridan foydalanish mumkin.
B. protected a’zosida himoyalangan ma'lumotlar maydonidan yoki himoyalangan funksiyaga uning tarkibiga kiritilgan sinflarida foydalanish mumkin.
C . public a’zosida umumiy ma'lumot maydoni yoki funksiyasi har qanday boshqa dastur nomi bilan chaqirilishi mumkin.
Quyidagi dastur kodini tahlil qiling:
#include using namespace std;
class A {
public:
A() {
t();
cout << "i from A is " << i << endl;
}
void t() {
setI(20);
}
virtual void setI(int i) {
this->i = 2 * i;
}
int i;
};
class B: public A {
public:
B() {
// cout << "i from B is " << i << endl;
}
virtual void setI(int i) {
this->i = 3 * i;
}
};
int main() {
A* p = new B();
return 0;
}
Quyidagi dastur kodini tahlil qiling:
#include using namespace std;
class A {
public:
A() {
t();
// cout << "i from A is " << i << endl;
}
void t() {
setI(20);
}
virtual void setI(int i) {
this->i = 2 * i;
}
int i;
};
class B: public A {
public:
B() {
cout << "i from B is " << i << endl;
}
virtual void setI(int i) {
this->i = 3 * i;
}
};
int main() {
A* p = new B();
return 0;
}
Abstrakt funksiya e’lon qilingan javobni belgilang.
Quyidagi ta’riflarning to’g’risini belgilang.
A.Abstrakt sinflar abstract kalit so’zi yordamida e’lon qilinadi.
B.Sinf virtual bo’lsa u holda abstract sinf hisoblanadi.
C.Abstrakt sinf oddiy sinfga o’xshaydi ammo unda obyekt yarata olmaymiz.
D. Abstrakt funksiyani abstract sinfda e’lon qilish mumkin emas.
Agar siz GeometricObject * p = & ob'ektini e'lon qilsangiz. Circle-ga p ni kiritish uchun ___________-dan foydalanishingiz mumkin.