首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列函数说明和C++代码,将应填入(n)处的字句写在对应栏内。 [说明] 在一些大型系统中,大多数的功能在初始化时要花费很多时间,如果在启动的时候,所有功能(包括不用的功能)都要全面初始化的话,会导致应用软件要花很多时间才能启动。因此常
阅读下列函数说明和C++代码,将应填入(n)处的字句写在对应栏内。 [说明] 在一些大型系统中,大多数的功能在初始化时要花费很多时间,如果在启动的时候,所有功能(包括不用的功能)都要全面初始化的话,会导致应用软件要花很多时间才能启动。因此常
admin
2010-12-17
78
问题
阅读下列函数说明和C++代码,将应填入(n)处的字句写在对应栏内。
[说明]
在一些大型系统中,大多数的功能在初始化时要花费很多时间,如果在启动的时候,所有功能(包括不用的功能)都要全面初始化的话,会导致应用软件要花很多时间才能启动。因此常将程序设计成到了实际要使用某种功能的阶段才初始化该功能。
以下示例展示了Proxy(代理)模式,PrinterProxy类执行一些比较“轻”的方法,需要真正执行“重”的方法时才初始化Print类。图5-1显示了各个类间的关系。
[图5-1]
[C++代码]
class Printable{
public:
virtual void setPrinterName(string name)=0;
virtual string getprinterName()=0;
virtual void print(string name)=0;
};
class Printer:public Printable{
private:
string name;
public:
Printer(string name){
cout<<"正在产生Printer的对象实例"<<endl;
this->name=name;
}
void setPrinterName(string name){
this->name=name;
}
string getPrinterName(){
return name;
}
void print(string msg){
cout<<"======="<<name<<"==========="<<endl;
cout<<msg<<endl;
}
};
class printerproxy :public (1) {
private:
String name;
Printer *real;
public:
PrinterProxy(string name){
(2)=NULL;
this->name=name;
}
void setPrinterName(string name){
if((3))real->setPrinterName(name);
this->name=name;
}
string getPrinterName(){
return name;
}
void print(string msg){
(4);
real->print(msg);
}
void realize(){
if(real==NULL)real=(5);
}
};
(5)
选项
答案
new Printer(name)
解析
由类图可知PrinterProxy类是Printable的子类,因此应声明为继承自Printable,故空(1)应填Printable。
real是一个Printer对象指针,应该进行初始化,初始化工作是在构造函数中完成的,若不进行初始化的话,realize()方法将不可预期,故空(2)应填real。
real是一个指针,调用之前当然得先判断real是否为空指针,只有不是空指针才能进行调用,否则将出现不可预期的结果,因此空(3)应填real!=NULL。
在执行打印时,需要保证已经正确生成了real对象,否则打印将无法完成,这也正是Proxy的核心所在,到真正需要打印时,才生产real对象,因此空(4)应填realize()。
real是Printer对象指针,空(5)是生成一个Printer对象,注意Printer类的构造函数是Printer(string name),故应填new Printer(name)。
转载请注明原文地址:https://kaotiyun.com/show/NqDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
下图所示的二叉树进行顺序存储(根结点编号为1,对于编号为i的结点,其左孩子结点为2i,右孩子结点为2i+1)并用一维数组BT来表示,已知结点X、E和D在数组BT中的下标为分别为1、2、3,可推出结点G、K和H在数组BT中的下标分别为____________
可利用一个栈来检查表达式中的括号是否匹配,其方法是:初始时设置栈为空,然后从左到右扫描表达式,遇到左括号“(”就将其入栈,遇到右括号“)”就执行出栈操作,忽略其他符号。对于算术表达式“a*(b+c))-d”,由于________________,因此可判断
设数组a[1..10,1..8]中的元素按行存放,每个元素占用4个存储单元,已知第一个数组元素a[1,1]的地址为1004,那么a[5,6]的地址为________________。
操作系统的主要任务是________________。
针对下列程序段,对于(A,B)的取值,以下(57)测试用例组合能够满足条件覆盖的要求。IF((A-10)=20AND(B+20)>10)THENC=0IP((A-30)<10AND(B-30)<0)THENB=30①A=5
下图所示的非确定有限自动机(s0为初态,s3为终态)可识别字符串______。
算术表达式a+(b-c)*d的后缀式是()(一、+、*表示算术的减、加、乘运算,运算符的优先级和结合性遵循惯例)。
(1)不属于计算机控制器中的部件。
若计算机存储数据采用的是双符号位(00表示正号、11表示负号),两个符号相同的数相加时,如果运算结果的两个符号位经()运算得1,则可断定这两个数相加的结果产生了溢出。
将二进制序列1011011表示为十六进制,为______。
随机试题
张某将祖传的古董交给李某,向李某借款5万,并约定张某不能按时归还借款时李某有权将古董变卖,所得价款优先偿还李某借款。在这个过程当中李某是()。
广泛存在于以生产导向为营销理念的组织当中的营销组织模式为()
A.1mgB.高C.低D.十二指肠及空肠E.粪便排出
多器官功能不全综合征的普遍特征不包括
我国会计行政法规不包括()。
商业银行可以采用()的方式设定每个维度的限额。
2018年3月末,我国本外币贷款余额130.45万亿元,同比增长11.9%。月末人民币贷款余额124.98万亿元,同比增长12.8%,增速与上月末持平,比上年同期高0.4个百分点。一季度人民币贷款增加4.86万亿元,同比多增6339亿元。分部门看,住户部
张先生2000年2月1日存入2000元,原定期1年。由于张先生急需用钱,于2000年11月1日提取该笔存款,假设一年定期存款月利率为9‰,活期储蓄存款月利率为3‰,则张先生可以获得利息为()。
•Readthetextbelowaboutsupplier.•Inmostofthelines41-52,thereisoneextraword.Itiseithergrammaticallyincorrec
A、Thetransactionscanbedoneanywhereatanytime.B、Someoneelsecanhelpyoudealwithtransactions.C、Thecostofthesales
最新回复
(
0
)