首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
请打开考生文件夹下的解决方案文件proj2,其中有两个类:一是销售类(sale),用于表示按照一件商品的基本价格进行销售;另一个是打折销售类(DiscountSale),用于表示在基本价格基础上按一个折扣比例进行销售。DiscountSale类继承了sal
请打开考生文件夹下的解决方案文件proj2,其中有两个类:一是销售类(sale),用于表示按照一件商品的基本价格进行销售;另一个是打折销售类(DiscountSale),用于表示在基本价格基础上按一个折扣比例进行销售。DiscountSale类继承了sal
admin
2019-08-23
51
问题
请打开考生文件夹下的解决方案文件proj2,其中有两个类:一是销售类(sale),用于表示按照一件商品的基本价格进行销售;另一个是打折销售类(DiscountSale),用于表示在基本价格基础上按一个折扣比例进行销售。DiscountSale类继承了sale类。类的主要数据成员的含义和成员函数的功能要求在程序注释中有说明。请在程序中的横线处填写适当的代码,然后删除横线,完成程序的功能。此程序的正确输出结果应为:
Discount item is cheaper.
Saving is 0.1
注意:只能在横线处填写适当的代码,不要改动程序中的其他内容。
#include
using namespace std;
class Sale
{
public:
Sale();//默认构造函数,将price初始化为0
Sale(double the_price);//构造函数,用the_price初始化price
virtual double bill()const;//返回当前商品的价格(基本价)
double savings(const Sale& other)const;//返回参数other所引用的对象比当前对象便宜的差价
protected:
double price;//商品的基本价格(不打折的价格)
};
Sale::Sale():price(0){}
Sale::Sale(double the_price):price(the_price){}
double Sale::bill()const
{
return price;
}
double Sale::savings(const Sale &other)const
{
//**********found**********
_____________;//返回当前对象价格比other贵多少的差价
}
class DiscountSale:public Sale//打折销售类继承销售类
{
public:
DiscountSale();//默认构造函数,将discount初始化为0
DiscountSale(double the_price,double the_discount);//构造函数,the_price是基本价格;the_discount是折扣百分比
virtual double bill()const;//返回本商品销售价格(即打折以后的实际售价,覆盖了基类的bill函数)
protected:
double discount;//折扣百分比。例如降价至原价的70%,此成员值应为70
DiscountSale::DiscountSale():discount(0){}
DiscountSale::DiscountSale(double the_price,double the_discount)
:Sale(the_price),discount(the_discount){}
double DiscountSale::bill()const
{
double fraction=discount/100;
//**********found**********
____________;//返回本对象打折以后的实际售价
}
bool operator<(const Sale&first,const Sale& second)
{
//**********found**********
______________;//判断是否first价格低于second价格
}
int main()
{
Sale simple(10.00);
DiscountSale discount(11.00,90);
if(discount
{
cout<<’’Discount item is cheaper.\n’’;
//**********found**********
//这里输出购买discount比购买simple节省多少钱
cout<<’’Saving is’’<<____________<
}
else
cout<<’’Discount item is not cheaper.\n’’:
return 0;
}
选项
答案
(1)return this一>bill()一other。.bill() (2)return fraction *price (3)return first.bill()
解析
Sale类有一个数据成员:保护成员price,表示商品的价格;两个构造函数:默认构造函数Sale()将类成员price初始化为0,构造函数Sale(double the_price)将成员price初始化为the_price;两个成员函数:bill()函数是一个虚函数,返回price的值;savings()函数返回参数other所引用的对象比当前对象便宜的差价
DiscountSale类继承Sale类,它有两个数据成员:保护成员price继承于Sale类,表示商品价格,保护成员discount表示商品折扣百分比;两个成员函数:savings()函数继承于Sale类;bill()函数继承Sale类并被改写。
main()函数中,首先构造两个类对象:Sale类对象simple和DiscountSale类对象discount,其中simple对象的price被赋值为10.00;discount对象的price被赋值为11.00,成员discount被赋值为90,即折扣为90%
(1)if语句的条件中,将discount与simple进行比较,如果main()主数的discount小于simple,那么说明discount的实际价格比simple价格便宜;所以需要重载“<”运算符,题意中重载的“<”运算符函数接收两个Sale类对象的引用,通过对象的引用,比较两个对象的实际价格,所以重载“<”运算符函数体中,若first对象引用的商品实际价格小于second对象引用的商品实际价格,那么函数值返回trile,可知函数体中需要补充的语句如下:
return frist.bill()
(2)由于bill()是虚函数,且重载“<”运算符函数的参数是引用,所以调用bill()函数时,使用了多态机制,引用的对象是Sale类对象,调用Sale类中的bill()函数,引用的对象是DiscountSale类对象,那么将调用DiscountSale类的bill()函数,bill()函数体中,需要返回的是商品的实际价格,即折扣完的价格,所以需要将返回打过折的价格:DiscountSale类中,bill()函数体中需要补充的语句如下:
return fraction *price
(3)savings()函数需要计算当前对象比other引用的对象在价格上贵多少,所以savings()函数体中需要补充的语句如下:
return this一>bill()一other.bill()
同样,this指针引用当前对象,other是引用对象,所以可以与bill()虚函数一起使用多态机制,获得当前对象和other对象的实际价格,再进行差值计算
(4)main()函数中,程序判断discount小于simple后,输出提示信息,再调用sayings()函数输出discount和simple的差值,这里需要计算discount比simple节省多少钱,所以需要将simple当做当前对象,discount当做参数传入savings()函数,所以补充语句如下:
simple.savings(discount)
转载请注明原文地址:https://kaotiyun.com/show/3D8p777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
下列有关继承和派生的叙述中,正确的是A)派生类不能访问基类的保护成员B)作为虚基类的类不能被实例化C)派生类应当向基类的构造函数传递参数D)虚函数必须在派生类中重新实现
已知数组a中的元素个数为n,下列语句的作用是将下标为i的元素移动到下标为 i-1的单元,其中1≤i<n。例如,当n=4,a中原有数据为1,2,3,4时,则移动后a中元素变为2,3,4,4。请将语句补充完整:for(int i=0;i<n-1;i++)
已知类Myst有一个只需要一个double型参数的构造函数,且将运算符“-”重载为友元函数。要使语句序列Mystx(3.2),y(5.5),z(0.0);z=8.9-y;y=x-6.3;能够正常运行,运算符
多继承的构造顺序可分为如下四步:①所有非虚基类的构造函数按照它们被继承的顺序构造②所有虚基类的构造函数按照它们被继承的顺序构造③所有子对象的构造函数按照它们声明的顺序构造④派生类自己的构造函数体这四个步骤的正确顺序是
有如下程序:#include<iostream>usingnamespacestd;classCon{charID;public:Con():ID(’A’){cout<<1;)Con(
以下4个选项中,属于浮点数常量的是()。
如果表达式--x中的“—”是重载的类运算符,采用运算符函数调用格式,其表达式还可以表示为______。
下面叙述错误的是()。
若有说明语句chara[]="Itismine";char*p="Itismine";则以下不正确的叙述是
字符串“a+b=12\n\t”的长度为()。A)12B)10C)8D)6
随机试题
Addressforms,asasusceptiblelinguisticphenomenon,havealwaysbeentheobjectofsociolinguisticresearches.
托里消毒散合八珍汤治疗的烧伤证型为
化工厂的第十条厂规违背劳动法( )规定。劳动行政部门对化工厂规章中的第十条规定,有权( )。
【案情】甲欲出卖自家的房屋,但其房屋现已出租给张某,租赁期还剩余1年。甲将此事告知张某,张某明确表示,以目前的房价自己无力购买。甲的同事乙听说后,提出购买。甲表示愿意但需再考虑细节。乙担心甲将房屋卖与他人,提出草签书面合同,保证甲将房屋卖与自
(2005年)如图4.7—1闭环系统的根轨迹应为()。
下列情境中代表内在动机的情境是()
提出最近发展区理论的心理学家是_________。
《虞美人·春花秋月何时了》中,李煜回首故国,想到旧时宫廷仍在,物是人非之感涌上心头,唱出了“___________,___________”。
设f(x,y)可微,f(1,2)=2,fx’(1,2)=3,fy’(1,2)=4,φ(x)=f[x,f(x,2x)],则φ’(1)=__________.
SQL语言的更新命令的关键词是()。
最新回复
(
0
)