题目详情

试题六(共 15 分)阅读下列说明和 C++代码,填补代码中空缺,将解答填入答题纸对应栏内。【说明】以下 C++代码实现一个简单客户关系管理系统(CrM)中通过工厂(Customerfactory)对象来创建客户(Customer)对象功能。客户分为创建成功客户(realCustomer)和空客户(NullCustomer)。空客户对象是当不满足特定条件时创建或获取对象。类间关系如图6-1 所示。

初级程序员,章节练习,基础复习,初级程序员练习

【C++代码】#include<iostream>#include<string>using namespace std; class Customer{protected:string name;public:(1) boll isNil()=0;(2) string getName()=0;﹜; class realCustomer (3){public:realCustomer(string name){this->name=name;﹜bool isNil(){ return false;﹜string getName(){ return name;﹜﹜; class NullCustomer (4) {public:bool isNil(){ return true;﹜string getName(){ return 〝Not Available in Customer Database〞; ﹜﹜;class Customerfactory{public:string names[3]={〝rob〞, 〝Joe〞,〝Julie〞﹜;public:Customer*getCustomer(string name){for (int i=0;i<3;i++){if (names[i].(5) ){return new realCustomer(name);﹜﹜return (6);﹜﹜; class CrM{public:void getCustomer(){Customerfactory*(7);Customer*customer1=cf->getCustomer(〝rob〞);Customer*customer2=cf->getCustomer(〝Bob〞);Customer*customer3=cf->getCustomer(〝Julie〞);Customer*customer4=cf->getCustomer(〝Laura〞); cout<<〝Customers〞<<endl;cout<<Customer1->getName() <<endl; delete customer1;cout<<Customer2->getName() <<endl; delete customer2;cout<<Customer3->getName() <<endl; delete customer3;cout<<Customer4->getName() <<endl; delete customer4;delete cf;﹜﹜; int main(){CrM*crs=new CrM();crs->getCustomer();delete crs;return 0;﹜ /*程序输出为:CustomersrobNot Available in Customer DatabaseJulieNot Available in Customer Database*/

正确答案及解析

正确答案
解析

1)virtual2)virtual3):public Customer4):public Customer5)compare(name)==06)new Null Customer()7)cf=New CustomerFactory();

【解析】

本题考察使用C++代码实现实际问题。在C++中,动态绑定是通过虚函数来实现。此题中用到了虚函数,所以要在成员函数原型缺钱加一个关键字virtual。类RealCustomer和类NullCustomer是类Customer派生类,因此3、4空都填public Customer。进行对比数据库中人名compare(name)==0第6空与前面语句是相反,一个是返回new RealCustomer(name),那么此处应填:new Null Customer()第7空,用工厂创建对象,cf=New CustomerFactory();

你可能感兴趣的试题

单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.V(S2)和P(S4)
  • B.P(S2)和V(S4)
  • C.P(S2)和P(S4)
  • D.V(S2)和V(S4)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.V(S1)P(S2)和V(S3)
  • B.P(S1)V(S2)和V(S3)
  • C.V(S1)V(S2)和V(S3)
  • D.P(S1)P(S2)和V(S3)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.P(S4)和V(S4)V(S5)
  • B.V(S5)和P(S4)P(S5)
  • C.V(S3)和V(S4)V(S5)
  • D.P(S3)和P(S4)V(P5)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.P(S3)和V(S4)V(S5)
  • B.V(S3)和P(S4)P(S5)
  • C.P(S3)和P(S4)P(S5)
  • D.V(S3)和V(S4)V(S5)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.P(S2)和P(S4)
  • B.P(S2)和V(S4)
  • C.V(S2)和P(S4)
  • D.V(S2)和V(S4)
查看答案

相关题库更多 +