#include<iostream>
#include<conio.h>
using namespace std;
class Base1
{ int i;
public:
Base1()
{ i=0;
cout<<"Run Base1 Constructor!"<<endl;
}
Base1(int I)
{ i=I;
cout<<"Run base1 ExtraConstructor!"<<endl;
}
};
class Base2
{ char M[20];
public:
Base2()
{
M = 'empty';
cout<<"run Base2 Constructor!"<<endl;
}
Base2(char* m)
{ strcpy(M,m);
cout<<"Run Base2 extraConstructor!"<<endl;
}
};
class Derived:public Base1, public Base2
{ char ch;
friend ostream& operator << (ostream&, const Derived&);
public:
Derived()
{ ch="V";
cout<<"Run Derived Constructor!"<<endl;
}
Derived(char CH, char* m, int I)
{ ch=CH;
strcpy(M,m);
i=I;
cout<<"Run Derived ExtraConstructor!"<<endl;
}
};
ostream& operator << (ostream& os, const Derived& obj)
{
os <<
"ch = " << obj.ch <<endl <<"M = " << obj.M <<endl <<"i = " << obj.d <<endi;
return os;
}
int main()
{
Derived Der;
cout<<Der<<endl;
}
Как инициализировать поле M словом 'empty' в конструкторе Base2()? Как реализовать интерфейсные функции в классах Base1, Base2, Derived, которые позволяли бы изменить или прочесть значения i, M, ch соответствующих классов?