Конструктори при множинному успадковуванні
Попередня програма не має конструкторів. Розглянемо приклад, що показує, як працюють конструктори при множинному успадковуванні. Далі приведена програма 17.10 використовує базові типи Type та Distance і похідний від обох цих класів тип Lumber.
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<bios.h>
#include<string.h>
class Type
{private:
char *dimensions;
char *grade;
public:
Type():dimensions(“N/A”),grade(“N/A”)
{ }
Type(char *d1,char *d2):dimensions(d1),grade(d2)
{ }
void gettype()
{cout<<”Розмір:”;cin>>dimensions;
cout<<”Сорт:”;cin>>grade;
}
void showtype()
{
cout<<”Розмір:”<<dimensions<<endl;
cout<<”Сорт:”<<grade<<endl;
}
};
///////////////
class Distance
{private:
int feet;
float inches;
public:
Distance():feet(0),inches(0.0)
{}
Distance(int ft,float in):feet(ft),inches(in)
{}
void getdist()
{cout<<”Фути:”;cin>>feet;
cout<<” дюйми:”;cin>>inches;
}
void showdist() const
{
cout<<feet<<”\-“<<inches<<’\”’;
}
};
////////////////
class Lumber:public Type,public Distance
{private:
int quantity;
double price;
public:
Lumber():Type(),Distance(),quantity(0),price(0.0)
{}
Lumber (char *dt, char *gr,
int ft, float in,
int qu,float prc):Type(dt,gr),Distance(ft,in),quantity(qu),price(prc)
{ }
void getlumber()
{Type::gettype();
Distance::getdist();
cout<<”Введіть кількість:”;cin>>quantity;
cout<<”Введіть ціну:”;cin>>price;
}
void showlumber()const
{
Type::showtype();
cout<<”\n Dovjyna:”;
Distance::showdist();
cout<<”\n Вартість ”<<quantity<<” штук:”<<(price*quantity);
}
};
///////////////
int main()
{clrscr();
Lumber studs;
cout<<”\n Інформація\n”;
studs.getlumber();
Lumber studs1(“2x4”,”const”,8,1.0,200,14);
cout<<”\n1=”;studs.showlumber();
cout<<”\n2=”;studs1.showlumber();
bioskey(0);
return 0;
}
Програма 17.10
Головною особливістю цієї програми є використання конструкторів похідного класу Lumber. Вони викликають підходящі конструктори класів Type і Distance.
Дата добавления: 2015-08-26; просмотров: 606;