使用VC++6,0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正程序中的错误,使程序输出的结果为 10 6 30 2 2 注意:错误的语句在//******error******的下面,修改

admin2013-11-15  53

问题 使用VC++6,0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正程序中的错误,使程序输出的结果为
    10
    6
    30
    2
    2
    注意:错误的语句在//******error******的下面,修改该语句即可。
    试题程序:
#include
class TC
{
private:
int number;
int Add(int i)
{
  return number+=i:
}
int Sub(int i)
{
  return number-=i:
}
int Mul(int i)
{
return number*=i:
}
int Div(int i)
{
if(i!=0)
{
  return number/=i;
  }
  else
  return number;
}
//******error******
typedef int(FUNC)(int);
//******error******
FUNC func[];
    public:
TC()
{
func[0]=TC::Add;
fune[1]=TC::Sub;
func[2]=TC::Mul;
func[3]=TC::Div;
number=0;
}
int CallFunction(int i,int j)
{
//******error******
    return(fune)(j);
}
};
void main()
{
TC myobj;
cout<cout<cout<cout<cout<}

选项

答案(1)“typedef int(TC::*FUNC)(int);”。 (2)“FUNC func[4];”。 (3)“return(this-)*func[i])(j);”。

解析 在类中定义函数指针须指定类名及指针定义运算符*,因此第1处函数指针正确的定义为“typedef int(TC::*FUNC)(int);”。函数指针数组本身是数组类型,因此在定义时如果没有初始化,就必须指定数组大小,在本题中因为指针数组包含的指针变量需要指向4种算数运算,因此定义指针数组大小为4,即第2处应改为“FUNC func[4];”。func是指针数组,因此访问时需要有指针运算符“*”,第3处应改成“return(this->*func)(j);”。
转载请注明原文地址:https://kaotiyun.com/show/uHNp777K
0

最新回复(0)