首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: 10 6 30 2 2 注意:错误的语句在//******error******的下面,
使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: 10 6 30 2 2 注意:错误的语句在//******error******的下面,
admin
2019-01-19
50
问题
使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为:
10
6
30
2
2
注意:错误的语句在//******error******的下面,修改该语句即可。
1 #include<iostream.h>
2 class CMyClass
3 {
4 private:
5 int number;
6 int Add(int i)
7 {
8 return number+=i;
9 }
10 int Sub(int i)
11 {
12 return number-=i;
13 }
14 int Mul(int i)
15 {
16 return number*=i;
17 }
18 int Div(int i)
19 {
20 if(i!=0)
21 {
22 return number/=i;
23 }
24 else
25 return number;
26 }
27 //******error******
28 typedef int(FUNC)(int);
29 //******error******
30 FUNC func[];
31 public:
32 CMyClass()
33 {
34 func[0]=CMyClass::Add;
35 func[1]=CMyClass::Sub;
36 func[2]=CMyClass::Mul;
37 func[3]=CMyClass::Div;
38 number=0;
39 }
40 int CallFunction(int i,int j)
41 {
42 //******error******
43 return(func
)(j);
44 }
45 };
46 void main()
47 {
48 CMyClass myobj;
49 cout<<myobj.CallFunction(0,10)<<end1;
50 cout<<myobj.CallFunction(1,4)<<end1;
51 cout<<myobj.CallFunction(2,5)<<end1;
52 cout<<myobj.CallFunction(3,15)<<end1;
53 cout<<myobj.CallFunction(3,0)<<end1;
54 }
选项
答案
(1)typedef int(CMyClass::*FUNC)(int); (2)FUNC func[4]; (3)return (this->*func[i])(j);
解析
CMyClass类有一个成员变量number,多个成员函数分别实现加减乘除功能。使用typedef定义了一个返回值是整型并带有一个整型参数的函数指针,并通过实例化一个容量为4的函数指针数组实现对类中定义的方法的调用。
(1)在类中定义函数指针须指定类名及指针定义运算符木,因此第1个标识下函数指针正确的定义为“typedefint(CMyClass::*FUNC)(int);”。
(2)函数指针数组本身是数组类型,因此在定义时如果没有初始化,就必须指定数组大小,在本题中因为指针数组包含的指针变量需要指向四种算数运算,因此定义指针数组大小为4,即第2个标识下应改为“FUNC func[4];”。
(3)func是指针数组,因此访问的时候需要有指针运算符“*”,第3个标识下应改成“return(this->*func
)(j);”。
转载请注明原文地址:https://www.kaotiyun.com/show/SgAp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
下列叙述中,错误的是
下列程序的输出结果是()。#include<iostream>usingnamespacestd;intmain()于chara[]=”Hello,Test”;Char*p=a;whil
下列程序的执行结果是()。#include<iostream.h>classSample{intx,y;public:Sample(){x=y=0;)Sample(inta,intb)
下列关于this指针的叙述中,正确的是()。
将6个数据进行冒泡排序,在最坏情况下需要比较的次数是
下列不是描述类的成员函数的是
下面关于数组的描述错误的是
下面是“二维向量”vector2D的定义,其中作为成员函数重载的运算符“+”的功能是将两向量的分量x和y对应相加,然后返回作为相加结果的新对象;请填空补充完整。classvector2D{doublex;//x分量
有如下定义:ClassMA{intvalue;public:MA(intn=0):value(n){}};MA*ta,tb;其中MA类的对象名标识符是______。
下面的符号中可以用作C++标识符的是()。
随机试题
一般来说,教学过程的基本要素包括教师、()。
在无线通信系统中影响电波传播的3种最基本的机制为反射、___________和散射。
口腔癌预防的含义包括
急性肾衰竭时,少尿的标准为()
用阴阳来概括人体的病理状态,正确的是( )。
甲乙两国长期以来由于民族宗教问题矛盾甚深,交恶甚重,以至于发生了战争。丙国和甲国是曾经共同患难的盟国,同时和乙国又因近年的经济发展产生了积极的友好合作关系,大量丙国居民侨居或移民乙国,丙国于是在甲乙两国之间的战争之间选择了中立。对此,下列说法正确的是哪一项
邮电部门对疫情报告按普通邮件传送。( )
某产品实际销售量为8000件,单价为30元,单位变动成本为12元,固定成本总额为36000元。则该产品的安全边际率为()。
砂锅煮汤时,熄火后仍然会沸腾较长一段时间,而铁锅却几乎没有这种现象,下列对原因的表述错误的一项是()。
社会公德是指在人类长期社会实践中逐渐形成的、要求每个社会公民在履行社会义务或涉及社会公众利益的活动中应当遵循的道德准则。在本质上是一个国家,一个民族或者一个群体,在历史长河中、在社会实践活动中积淀下来的道德准则,文化观念和思想传统。社会主义现代化建设的进程
最新回复
(
0
)