问答题
请使用VC6或使用【答题】菜单打开考生目录proj3下的工程文件proj3,此工程包含一个源程序文件proj3.cpp,其中定义了用于表示二维向量的类MyVector;程序应当显示(6,8)。但程序中有缺失部分,请按照以下提示,把缺失部分补充完整:(1)在“//****found****”的下方是构造函数的定义,它用参数提供的坐标对x和y进行初始化。(2)在“//**2*****found***”的下方是减法运算符函数定义中的一条语句。两个二维向量相减生成另一个二维向量:其x坐标等于两向量x坐标之差,其y坐标等于两向量Y坐标之差。(3)在“//**3** ****found****”的下方,语句的功能是使变量v3获得新值,它等于向量v1与向量v2之和。注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“****found****”。//proj 3.cpp#include<iostream>using std::ostream;using std::cout;using std::endl;class MyVector f //表示二维向量的类double x;//x坐标值double y; //Y坐标值public: MyVector(double i=0.0,double j=0.0); //构造函数 MyVector operator+(MyVector j); //重载运算符+ friend MyVector operator一(MyVec。tor i,MyVector j); //重载运算符一 friend ostream& operator << (ostream&OS,MyVector v); //重载运算符<<};//**1** **********found**********——(double i,double j):X(i),y(j){)MyVector MyVector::operator+(MyVec’tor j){return MyVector(x+j.x,y+j.y);}MyVector operator一(MyVector i,Myvector j){//**2** **********found**********return MyVector(______);}ostream&operator<<(ostream&os,MyVector V){OS <<‘(’<<v.X<<‘,’<<v.Y<<‘)’;//输出向量v的坐标return os;}int main(){ MyVector vl(2,3),v2(4,5),v3; //**3** ********** found**********v3=________;cout<<v3<<endl;return 0;}
【正确答案】正确答案:(1)MyVector::MyVector (2)i.x—j.x,i.y—j.y (3)v1+v2
【答案解析】解析:本题考查二维向量类MyVector,其中涉及的知识点有构造函数,重载运算符+、一、<<。在类外定义构造函数时,语法和定义其他类函数一样,前面要加上类名和作用域符号。重载运算符函数要注意其返回值类型和参数类型。 【解题思路】 (1)主要考查的是构造函数,在类外定义构造函数时要使用类名和作用域,即MyVector::MyVector。 (2)主要考查重载运算符“一”的返回语句,返回值应为向量i和j的差,即MyVector(i.x—j.x,i.y—j.y);。 (3)主要考查重载运算符“+”的使用,由题目可知v3是v1和v2的和,前面我们已经重新定义了运算符“+”,所以在这里直接使用语句v3=v1+v2;即可。