首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: 10 6 30 2 2 注意:错误的语句在//******error******的下面,
使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: 10 6 30 2 2 注意:错误的语句在//******error******的下面,
admin
2019-01-19
69
问题
使用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://kaotiyun.com/show/SgAp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
下面程序的结果为______。#include<iostream.h>voidmain(){int3=1,b=2;boolc=1;if(a>b)||c)cout<<“true”<<endl;else
设有定义:classperson{intnum;charname[10];public:voidinit(intn,char*m)};personstd[30]则以下叙述不正确的是(
类模板的使用实际上是将类模板实例化成一个具体的()。
有以下程序:#include<iostream>usingnamespacestd;classBase{public:Base(){K=0;}intx;};c
下面的描述中错误的是
用树形结构来表示实体之间联系的模型称为
在C++语言的结构化程序设计中,______是程序的基本组成单元;在C++语言的面向对象设计框架中,______是程序的基本组成单元。
以下关于私有和保护成员的叙述中,不正确的是
逻辑表达式x>3&&x<10的相反表达式为______。
在C++程序中,如果要求通过函数来实现一种简单的功能,并且要求尽可能加快序执行速度,则应该选用()。
随机试题
17岁的高中生甲向30岁的邻居乙借钱1000元购买自行车,在购买时不慎将钱丢失。乙要求甲还钱,甲不得已将事情告诉父母。申的父母一方面对儿子进行批评教育,另一方面认为乙不应该借钱给其未成年的孩子,而且钱已丢失,因而拒绝还钱。如果甲以自己的劳动收人为主要生
大军不知广所之,故弗从。之:________
关于房室传导阻滞的表述,不正确的是
外感热病中,正邪相争,提示病变发展转折点的是
人体免疫细胞可分为两类,一种是保卫人体不受侵犯的“军队”型细胞,另一类则是维持内部治安的“警察”型细胞。前者是通过抗原抗体反应来实现抗病毒感染,其作用反应通常需要一定的时间;后者又称为自然杀伤细胞(NK细胞),人体体内每天会诞生100万个新细胞,其中约有5
采用直接投资和资本金注入方式的政府投资项目,由政府进行投资决策,政府要审批(),并对项目的风险承担责任。
标的证券暂停交易,融资融券债务到期日仍未确定恢复交易日或恢复交易日在融资融券债务到期日之后的,融资融券的期限不可以顺延。()
—Howoftendoyougotoseeafilm?—_____,Monday,WednesdayandFriday.
分数进行操作,每次分母加15,分子加7。问至少经过几次这样的操作能使得到的分数不小于?()
“一战”后,协约国与奥地利签订的确认奥匈帝国解体的文件是()。
最新回复
(
0
)