#include<iostream>
using namespace std;
class A//базовый класс
{
int aa;
public :
A( ) { cout << "Конструктор1 класса А" << endl; }
A( int AA) : aa( AA) { cout << "Конструктор2 класса А" << endl; }
~A( ) { cout << "Деструктор класса А" << endl; }
} ;
class B: virtual public A//производный класс(первый базовый для D)
{
char bb;
public :
B( ) { cout << "Конструктор1 класса B" << endl; }
B( int AA, char BB) : A( AA) , bb( BB)
{ cout << "Конструктор2 класса B" << endl; }
~B( ) { cout << "Деструктор класса B" << endl; }
} ;
class C: virtual public A//производный класс(второй базовый для D)
{
float cc;
public :
C( ) { cout << "Конструктор1 класса C" << endl; }
C( int AA, float CC) : A( AA) , cc( CC)
{ cout << "Конструктор2 класса C" << endl; }
~C( ) { cout << "Деструктор класса C" << endl; }
} ;
class D: public C, public B//производный класс(IIуровня)
{
int dd;
public :
D( ) { cout << "Конструктор1 класса D" << endl; }
D( int AA, char BB, float CC, int DD) :
A( AA) ,B( AA,BB) , C( AA,CC) ,dd( DD)
{ cout << "Конструктор2 класса D" << endl; }
~D( ) { cout << "Деструктор класса D" << endl; }
} ;
int main( )
{
D d( 1 , 'a' , 2.3 , 4 ) ;
D dd;
return 0 ;
}
I2luY2x1ZGU8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNsYXNzIEEvL9Cx0LDQt9C+0LLRi9C5INC60LvQsNGB0YEKewoJaW50IGFhOwpwdWJsaWM6CglBKCl7Y291dDw8ItCa0L7QvdGB0YLRgNGD0LrRgtC+0YAxINC60LvQsNGB0YHQsCDQkCI8PGVuZGw7fQoJQShpbnQgQUEpOmFhKEFBKXtjb3V0PDwi0JrQvtC90YHRgtGA0YPQutGC0L7RgDIg0LrQu9Cw0YHRgdCwINCQIjw8ZW5kbDt9Cgl+QSgpe2NvdXQ8PCLQlNC10YHRgtGA0YPQutGC0L7RgCDQutC70LDRgdGB0LAg0JAiPDxlbmRsO30KfTsKCmNsYXNzIEI6dmlydHVhbCBwdWJsaWMgQS8v0L/RgNC+0LjQt9Cy0L7QtNC90YvQuSDQutC70LDRgdGBKNC/0LXRgNCy0YvQuSDQsdCw0LfQvtCy0YvQuSDQtNC70Y8gRCkKewoJY2hhciBiYjsKcHVibGljOgoJQigpe2NvdXQ8PCLQmtC+0L3RgdGC0YDRg9C60YLQvtGAMSDQutC70LDRgdGB0LAgQiI8PGVuZGw7fQoJQihpbnQgQUEsIGNoYXIgQkIpOkEoQUEpLCBiYihCQikKCXtjb3V0PDwi0JrQvtC90YHRgtGA0YPQutGC0L7RgDIg0LrQu9Cw0YHRgdCwIEIiPDxlbmRsO30KCX5CKCl7Y291dDw8ItCU0LXRgdGC0YDRg9C60YLQvtGAINC60LvQsNGB0YHQsCBCIjw8ZW5kbDt9Cn07CmNsYXNzIEM6dmlydHVhbCBwdWJsaWMgQS8v0L/RgNC+0LjQt9Cy0L7QtNC90YvQuSDQutC70LDRgdGBKNCy0YLQvtGA0L7QuSDQsdCw0LfQvtCy0YvQuSDQtNC70Y8gRCkKewoJZmxvYXQgY2M7CnB1YmxpYzoKCUMoKXtjb3V0PDwi0JrQvtC90YHRgtGA0YPQutGC0L7RgDEg0LrQu9Cw0YHRgdCwIEMiPDxlbmRsO30KCUMoaW50IEFBLCBmbG9hdCBDQyk6QShBQSksIGNjKENDKQoJe2NvdXQ8PCLQmtC+0L3RgdGC0YDRg9C60YLQvtGAMiDQutC70LDRgdGB0LAgQyI8PGVuZGw7fQoJfkMoKXtjb3V0PDwi0JTQtdGB0YLRgNGD0LrRgtC+0YAg0LrQu9Cw0YHRgdCwIEMiPDxlbmRsO30KfTsKY2xhc3MgRDpwdWJsaWMgQywgcHVibGljIEIvL9C/0YDQvtC40LfQstC+0LTQvdGL0Lkg0LrQu9Cw0YHRgShJSdGD0YDQvtCy0L3RjykKewoJaW50IGRkOwpwdWJsaWM6CglEKCl7Y291dDw8ItCa0L7QvdGB0YLRgNGD0LrRgtC+0YAxINC60LvQsNGB0YHQsCBEIjw8ZW5kbDt9CglEKGludCBBQSwgY2hhciBCQiwgZmxvYXQgQ0MsIGludCBERCk6CglBKEFBKSxCKEFBLEJCKSwgQyhBQSxDQyksZGQoREQpCgl7Y291dDw8ItCa0L7QvdGB0YLRgNGD0LrRgtC+0YAyINC60LvQsNGB0YHQsCBEIjw8ZW5kbDt9Cgl+RCgpe2NvdXQ8PCLQlNC10YHRgtGA0YPQutGC0L7RgCDQutC70LDRgdGB0LAgRCI8PGVuZGw7fQp9OwoKaW50IG1haW4oKQp7CglEIGQoMSwgJ2EnLCAyLjMsIDQpOwoJRCBkZDsKCXJldHVybiAwOwp9