贵州大学oj C++ 第五次 3.抽象的饮料类Drinks

记录学习日常 代码可能有错 大家多多包涵 有好的建议提出的话 我会开心接纳 初学阶段 

定义一个抽象的饮料类Drinks,该类有一个数据成员brand(品牌),一个纯虚函数composition(成分),用于打印输出饮料的各种成分的含量。

(1)请完成Drinks类的定义,定义你认为必要的任何成员;

(2)请为Drinks类定义公有派生类Liquor(含酒精饮料)和Softdrinks(不含酒精饮料),Liquor类有alcoholicity(酒精含量)数据成员,Softdrinks类有sugarcontent(含糖量)数据成员。在这两个类中根据上述规则实现纯虚函数composition;

(3)请为Softdrinks类定义公有派生类Milktea(奶茶)和Fruitjuice(果汁),它们分别有milkcontent(牛奶含量)和juicecontent(果汁含量)数据成员。在这两个类中根据上述规则覆盖函数composition;

(4)在主函数中定义Drinks的指针并分别指向不同的派生类对象,调用composition输出不同饮料的成分含量。

main函数已经写好,请根据main函数的内容完成上述所有类的设计。

int main(){

    Drinks *pd;

    Liquor liquor("乐堡啤酒",0.045);

    Softdrinks softdrinks("可口可乐",5.3);

    Milktea milktea("阿萨姆奶茶",6.7,0.1);

    Fruitjuice fruitjuice("汇源果汁",3.2,0.3);

    pd=&liquor;

    cout<<pd->getBrand()<<endl;

    pd->composition();

    pd=&softdrinks;

    cout<<pd->getBrand()<<endl;

    pd->composition();

    pd=&milktea;

    cout<<pd->getBrand()<<endl;

    pd->composition();

    pd=&fruitjuice;

    cout<<pd->getBrand()<<endl;

    pd->composition();

    return 0;

}

样例输出

乐堡啤酒
酒精含量:4.5%
可口可乐
含糖量:每100ml5.3克
阿萨姆奶茶
含糖量:每100ml6.7克
牛奶含量:10%
汇源果汁
含糖量:每100ml3.2克
果汁含量:30%

#include<iostream>

using namespace std;

// 基类
class Drinks {
protected:
    string brand;
public:
    //用于打印输出饮料的各种成分的含量的纯虚函数
    virtual void composition() = 0;

    virtual string getBrand() = 0;
};

class Liquor : public Drinks {
    double alcoholicity;
    string brand;
public:
    Liquor() = default;

    Liquor(string n, double a) : brand(n), alcoholicity(a) {}

    string getBrand() { return brand; }
    void composition(){
        double a=alcoholicity*100;
        cout<<"酒精含量:"<<a<<"%"<<endl;
    }
};

    class Softdrinks : public Drinks {
    protected:
        string brand;
        double sugarcontent;
    public:
        Softdrinks() = default;

        Softdrinks(string n, double s) : brand(n), sugarcontent(s) {}

        string getBrand() { return brand; }
        void composition(){
            cout<<"含糖量:"<<"每100ml"<<sugarcontent<<"克"<<endl;
        }

    };

    class Milktea : public Softdrinks {
        double milkcontent, sugarcontent;
        string brand;
    public:
        Milktea() = default;

        Milktea(string n, double s, double m) : brand(n), sugarcontent(s), milkcontent(m) {}

        string getBrand() { return brand; }
        void composition(){
            cout<<"含糖量:"<<"每100ml"<<sugarcontent<<"克"<<endl;
            cout<<"牛奶含量:"<<milkcontent*100<<"%"<<endl;
        }
    };

    class Fruitjuice : public Softdrinks {
        double juicecontent,sugarcontent;
        string brand;
    public:
        Fruitjuice()=default;
        Fruitjuice(string n,double s,double j):brand(n),sugarcontent(s),juicecontent(j){}
        string getBrand() { return brand; }
        void composition(){
            cout<<"含糖量:"<<"每100ml"<<sugarcontent<<"克"<<endl;
            cout<<"果汁含量:"<<juicecontent*100<<"%"<<endl;
        }
    };

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值