Описание слайда:
Пример
class B{
int a;
public:
B() { };
B(int x) { a=x; }
void show_B() { cout<<"B= "<< a <<"\n"; }
virtual void showV_B() { cout<<"virt B= "<< a <<"\n"; }
};
class D1: public B {
int b;
public:
D1(int x, int y) : B(y) { b=x;};
void show_D1() { cout<<"D1= "<< b <<"\n"; show_B();}
void showV_B() { cout<<"virt D1= "<< b <<"\n"; }
};
class D2: public B{
int c;
public:
D2(int x, int y) : B(y) { c=x;};
void show_D2() { cout<<"D2= "<< c <<"\n"; show_B();}
void showV_B() { cout<<"virt D2= "<< c <<"\n"; }
};
class D3: public D1 {
int d;
public:
D3(int x, int y, int z) : D1(y,z) { d=x;}
void show_D3() { cout<<"D3= "<<d <<"\n"; show_D1();}
void showV_B() { cout<<"virt D3= "<< d <<"\n"; }
};
class D4: public D2, public D1 {
int e;
public:
D4(int x, int y, int z, int i, int j) : D1(y,z), D2(i,j) { e=x;}
void show_D4() { cout<<"D4= "<< e <<"\n"; show_D1(); show_D2();}
void showV_B() { cout<<"virt D4= "<< e <<"\n"; }
};
int main() {
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
B objB(100);
D1 objD1(200,200);
D2 objD2(300,300);
D3 objD3(1,2,3);
D4 objD4(10,20,30,40,50);
cout<<"B objB(100);\n";
cout<<"D1 objD1(200,200);\n";
cout<<"D2 objD2(300,300);\n";
cout<<"D3 objD3(1,2,3,4,5);\n";
cout<<"D4 objD4(10,20,30,40,50);\n";
cout<<"\nСледуя иерархии класса D3: \n";
objD3.show_D3();
cout<<"\nСледуя иерархии класса D4\n";
objD4.show_D4();
B *p[5];
p[0]=&objB;
p[1]=&objD1;
p[2]=&objD2;
p[3]=&objD3;
//p[4]=&objD4;
cout<<"\n Работа виртуальных функций \n";
for (int i=0; i<4;i++)
p[i]->showV_B();
getch();
return 0;
}