Misal: c.show() nəticəsində nə baş verəcək?
səhifə 9/9 tarix 19.06.2022 ölçüsü 0,59 Mb. #61805 növü Mühazirə
Varislik.Virtual funk.
Misal: c.show() nəticəsində nə baş verəcək?
#include
using namespace std;
// yol_neqliyyati -adlı baza sinifi təyi edirik
class yol_neqliyyati {
int wheels;
int passengers;
public:
void set_wheels(int num) { wheels = num; }
int get_wheels() { return wheels; }
void set_pass(int num) { passengers = num; }
int get_pass() { return passengers; }
};
// truck-yük maşınları üçün törəmə sinifi təyin edirik.
class truck : public yol_neqliyyati {
int Yuk;
public:
void set_Yuk(int size) { Yuk = size; }
int get_Yuk() { return Yuk; }
void show();
};
// enumerator teyin edirik.
enum M_tipi {car, van, wagon};
// minik avtomobilləri üçün törəmə sinifi təyin edirik.
class automobile : public yol_neqliyyati {
enum M_tipi car_type;
public:
void set_type(M_tipi t) { car_type = t; }
enum M_tipi get_type() { return car_type; }
void show();
};
void truck::show()
{
cout << "Teker: " << get_wheels() << "\n";
cout << "Sernishin: " << get_pass() << "\n";
cout << "Yuku (m3): " << Yuk << "\n";
}
void automobile::show()
{
cout << "Teker: " << get_wheels() << "\n";
cout << "Sernishin: " << get_pass() << "\n";
cout << "Tipi: ";
switch(get_type()) {
case van: cout << "Avtofurqon\n";
break;
case car: cout << "Minik\n";
break;
case wagon: cout << "Tir\n";
}
}
int main()
{
truck t1, t2;
automobile c;
t1.set_wheels(18);
t1.set_pass(2);
t1.set_Yuk(320);
t1.show();
cout << "\n";
t2.set_wheels(6);
t2.set_pass(3);
t2.set_Yuk(120);
t2.show();
cout << "\n";
c.set_wheels(4);
c.set_pass(6);
c.set_type(van);
c.show();
return 0;
}
Misal. Proqramı şərh edin və səhvi tapın
#include "stdafx.h"
#include
#include
using namespace std;
class Person // Insanlar sinifi
{
public:
string profession;
int age;
Person(){profession="Peshesiz"; age=16;}
void display()
{
cout << "Peshemin adi: " << profession << endl;
cout << "Yashim: " << age << endl;
}
virtual void walk(){ cout << "Normal Geze bilirem." << endl; }
void talk() { cout << "Normal Danisha bilirem." << endl; }
};
// MathsTeacher sinifi Person –un (baza sinifin) törəməsidir(varisidir).
class MathsTeacher : public Person //futbolcular sinifi
{
public:
MathsTeacher(){profession="Muellim"; age=26;}
void walk() { cout << "Agir-agir Geze bilirem." << endl; } // virtual
void talk() { cout << "ingilisce Danisha bilirem." << endl; }//uzv funksiya
void teachMaths() { cout << "Riyaziyyatdan ders deyirem." << endl; }
};
// Footballer sinifi Person –un (baza sinifin) törəməsidir(varisidir).
class Footballer : public Person
{
public:
Footballer(){profession="Futbolcu"; age=26;}
void walk() { cout << "Tez-tez Geze bilirem." << endl; }// virtual funksiya
void talk() { cout << "Pis Dansha bilirem." << endl; }//uzv funksiya
void playFootball() { cout << "Futbol oynayiram." << endl; }
};
int main()
{
const int N=3;
Person *insan[N];
//insan[0]=new Footballer();
//insan[1]=new MathsTeacher();
//insan[2]=new Footballer();
for (int i = 0; i < N; i++)
{
if (rand()%2)
insan[i]=new Footballer();
else insan[i]=new MathsTeacher();
insan[i]->age=(rand()%30);
}
for (int i = 0; i < N; i++)
{
insan[i]->display();
insan[i]->walk();
insan[i]->talk();
insan[i]->playFootball(); //Sehv!
cout << endl;
}
return 0;
}
Misal. Proqram kodunda müdaxilə icazələrini döğrudurmu?
#include
#include
class base
{
public:
int x;
protected:
int y;
private:
int z;
};
class publicVaris: public base //Baza və Varis üzvlərə medaxilə icazəsində dəyişiklik olmur
{
// x - bu sinifin public üzvünə çevrildi.(dəyişilməz qaldı)
// y - bu sinifin ptotected üzvünə çevrildi. (dəyişilməz qaldı)
//publicVaris -də z-dən istifadə icazəsi yoxdur! (dəyişilməz qaldı)
};
class protectedVaris: protected base // publicVaris sinifi base sinifinin üzvlərinə müdaxiləsi - protected - çevrildi. Base-in Private üzvləri yenə də privete-dir!
{
// x - bu sinifin protected üzvünə çevrildi.
// y - bu sinifin protected üzvünə çevrildi.
//protectedVaris-də z-dən istifadə icazəsi yoxdur! (dəyişilməz qaldı)
};
class privateVaris: private base
{
// x -bu sinifin private üzvünə çevrildi.
// y -bu sinifin private üzvünə çevrildi.
// privateVaris-də z-dən istifadə icazəsi yoxdur! (dəyişilməz qaldı)
};
int main()
{
base b;
b.x=5;
//b.y=2;//müdaxiləyə icaze yoxdur
//b.z=0;//müdaxiləyə icaze yoxdur
publicVaris pubV;
pubV.x=1;
//pubV.y=2; //müdaxiləyə icaze yoxdur
//pubV.z=1; //müdaxiləyə icaze yoxdur
protectedVaris proV;
//proV.x=1;// müdaxiləyə icaze yoxdur
//proV.y=1;// müdaxiləyə icaze yoxdur
//proV.z=2;// müdaxiləyə icaze yoxdur
privateVaris prV;
//prV.x=5;// müdaxiləyə icaze yoxdur
//prV.y=2;// müdaxiləyə icaze yoxdur
//prV.z=1;// müdaxiləyə icaze yoxdur
return 0;
} Dostları ilə paylaş: