首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC6打开考生文件夹proj2下的工程proj2,其中有两个类:一是销售类(sale),用于表示按照一件商品的基本价格进行销售;另一个是打折销售类(DiscountSale),用于表示在基本价格基础上按一个折扣比例进行销售。DiscountSale类继
使用VC6打开考生文件夹proj2下的工程proj2,其中有两个类:一是销售类(sale),用于表示按照一件商品的基本价格进行销售;另一个是打折销售类(DiscountSale),用于表示在基本价格基础上按一个折扣比例进行销售。DiscountSale类继
admin
2018-03-13
24
问题
使用VC6打开考生文件夹proj2下的工程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
{
//ERROR*****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
{
// *****found*****
________;//判断是否first价格低于second价格
}
int main()
{
Sale simple(10.00);
DiScountSale diScount (11.00,90);
if(discount
{
cout<<"DiScount item ischeaper.\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所引用的对象比当前对象便宜的差价。
DiseountSale类继承Sale类,它有两个数据成员:保护成员price继承于Sale类,表示商品价格,保护成员discount表示商品折扣百分比;两个成员函数:say.ings()函数继承于Sale类;bill()函数继承Sale类并被改写。
main()函数中,首先构造两个类对象:Sale类对象simple和DiscountSale类对象discount,其中simple对象的price被赋值为10.oo;discount对象的price被赋值为11.00,成员discount被赋值为90,即折扣为90%。
(1)if语句的条件中,将discount与simple进行比较,如果main()主数的discount小于simple,那么说明discount的实际价格比simple价格便宜;所以需要重载“<”运算符,题意中重载的“<”运算符函数接收两个Sale类对象的引用,通过对象的引用,比较两个对象的实际价格,所以重载“<”运算符函数体中,若first对象引用的商品实际价格小于second对象引用的商品实际价格,那么函数值返回true,可知函数体中需要补充的语句如下:
return first.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小于sire-ple后,输出提示信息,再调用savings()函数输出discount和simple的差值,这里需要计算discount比simple节省多少钱,所以需要将simple当做当前对象,discount当做参数传人savings()函数,所以补充语句如下:
simple.savings(discount)
转载请注明原文地址:https://www.kaotiyun.com/show/UVAp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
派生类对象对其基类中的什么成员是可访问的?
面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是()。
对如下二叉树进行后序遍历的结果为()。
下列程序的输出结果是______。#include<iostream>usingnamespacestd;classTest{public:Test(){cnt++;}~Test
在下面程序的横线处填上适当的内容,使程序执行后的输出结果为ABCD。#include<iostream.h>usingnamespacestd;classA{pu
下列函数的功能是判断字符串str是否对称,对称则返回true,否则返回false。请在横线处填上适当内容,实现该函数。boolfun(char*str){inti=0,j=0;while(str[j])_____
以下函数模板max()的功能是:返回数组a中最大元素的值。请将横线处缺失部分补充完整。template<typenameT>Tmax(Ta[],intn){Tm=a[0];for(in
执行语句序列ofstreamoutfite("data.dat");if(...)cout<<"ok";elsecout<<"fail";后,如果文件打开成功,显示“ok”,否则显示“fail”。由此可知,上面if语句的“…”
如下程序声明了一个使用两个通用数据类型的模板类dataClass,其中构造函数用于初始化两个数据成员,成员函数show用于输出两个数据成员的数值。#include<iostream>usingnamespacestd;______
如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。下列程序没有使用多态机制,其输出结果是______。#include<iostream>usingnamespacestd;c
随机试题
审稿者对稿件除了要从政治性、思想性等角度进行宏观把握外,还要从()等方面进行分析。
下列语句中,运用了比拟修辞的是()
一老年男性上腹不适、食欲不振3个月。近1个月来出现黄疸进行性加重,有体重减轻,全身明显黄染,肝未触及,深吸气时可触到肿大胆囊底部,无触痛。化验血胆红素15mg/dl,尿检胆红素阳性。最可能诊断是()
人类免疫缺陷病毒的主要特征是
A、全年均可B、植物充分生长,茎叶茂盛时C、采收情况不一D、因药材的种类不同而异E、果实自然成熟或将近成熟时藻、菌、地衣类一般采收应在()
赵某(男,38岁)找来在街头流浪的甲(13周岁)、乙(14周岁)、丙(16周岁)、丁(17周岁),另外从戊那里租来己(7周岁)、庚(5周岁),教给他们在街头扒窃行人的技巧。然后每日带领甲等6人在过街天桥或者街头扒窃财物。另外,偶尔也有人慕名而来,向赵某求教
甲房地产开发公司在地震烈度为7度的A市以出让方式取得一宗住宅用地,面积100000m2,成交价格10亿元,并组建项目公司。按规划方案,拟建设15栋进深20m的高层板式住宅楼,其中,地上一层为停车间,建筑面积1600m2,二~二十二层为住宅,每层的建筑面积1
晒太阳能够帮助人体吸收哪些维生素?()
资本主义危机的根源在于()。
试题一阅读以下说明,回答【问题1】至【问题5】,将解答填入答题纸对应的答题栏内。【说明】某网站拓扑结构如图1-1所示,用户由DHCP服务器分配IP地址,FTP服务器的操作系统为WindowsServer2003,个服务器的
最新回复
(
0
)