请打开考生文件夹下的解决方案文件proj1,此工程包含有一个源程序文件proj1.cpp。其中位于每个注释“//ERROR ****found****”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:
(4,4)
注意:只修改注释“//ERROR ****found****”的下一行语句,不要改动程序中的其他内容。
1 //proj1.cpp
2 #include<iostream>
3 using namespace std;
4 class Point{
5 public:
6 //ERROR ********found********
7 Point(double x,double y)x (x), y(y){}
8 double GetX()const{return x;}
9 double GetY() const { return y;}
10 //ERROR ******found******
11 void Hove(double xoff,double yOff)const
12 {_x+=xOff;_y+=yOff;}
13 protected:
14 double _x,_y;
15 };
16 int main()
17 {
18 Point pt(1.5,2.5);
19 pt.Move(2.5,1.5);
20 //ERROR *******found*******
以下语句输出pt成员x和y的值
21 cout <<'('<<pt. x << ','<< pt._y<<')'<<endl;
22 return 0 ;
23 }
【正确答案】(1)Point(douhle x,double y):_x(x),_y(y){}或Point(douhle x,double y){_x=x;_y=y;}
(2)void Move(double xOff,double yOff)
(3)cout<<'('<<pt.GetX()<<','<<pt.GetY()<<')'<<endl:
【答案解析】(1)主要考查的是构造函数的成员初始化列表的语法,在成员列表之前必须加“:”。
(2)主要考查成员函数中const的使用,先看Move函数的函数体:
{_x+=xOff;_y+=yOff;}
可以看到Point类的两个私有成员_x和_y的值都发生了变化,因此Move函数不能使用const,因为只有在函数内不改变类的成员的值时才能使用const。
(3)主要考查私有成员不能被类外函数调用的知识。题目要求输出pt成员_x和_y的值,从Point类中的函数double GetX()const{return_x;{和double GetY()const{return_y;},可以分别得到_x和_y的值,因此这里使用语句tout<<'('<<pt.GetX()<<','<<pt.CetY()<<')'<<endl;调用成员函数CetX()和GetY()来实现题目要求。