64,698
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <string>
using namespace std;
class device
{
public:
device(const string& m, double c, time_t d) : name(m), cost(c), date(d) {}
virtual ~device() {}
virtual string get_name() = 0;
virtual double get_cost() = 0;
virtual time_t get_date() = 0;
protected:
string name;
double cost;
time_t date;
};
class tv : public device
{
public:
tv(const string& m, double c, time_t d) : device(m, c, d) {}
virtual string get_name() { return name; }
virtual double get_cost() { return cost; }
virtual time_t get_date() { return date; }
};
class dvd : public device
{
public:
dvd(const string& m, double c, time_t d) : device(m, c, d) {}
virtual string get_name() { return name; }
virtual double get_cost() { return cost; }
virtual time_t get_date() { return date; }
};
// using composition
class dvdtv : public tv
{
public:
dvdtv(const string& m, double c, time_t d, const dvd& _dvd) :
tv(m, c, d), tv_dvd(_dvd)
{}
virtual string get_name() { return name; }
virtual double get_cost() { return 0.8 * (cost + tv_dvd.get_cost()); }
virtual time_t get_date() { return date; }
private:
dvd tv_dvd;
};
int main(void)
{
return 0;
}
//还有很多得自己来.
class manage
{
public:
virtual double cost()=0;
virtual ~manage(){}
};
class normaltv:public virtual manage
{
double x;
public:
normaltv(double x1=0){x=x1;}
double cost()
{return x;}
};
class dvd:public virtual manage
{
double y;
public:
dvd(double y1=0){y=y1;}
double cost()
{return y;}
};
class dvdtv:public virtual manage, public normaltv,public dvd
{
double z;
public:
dvdtv(double m=0,double n=0):normaltv(m),dvd(n){z=0.8*(m+n);}
double cost()
{return z;}
};