名称 编程题6_1_重载运算符:point类运算符重载 编译器选用g++ 备注 描述 定义一个表示三维空间坐标点的类,并对下列运算符重载,主函数定义类对象并调用重载的运算符。 (1) 输出流运算符<<:按(x,y,z)的格式输出该点坐标(坐标值为整形) (2) 关系运算符>:如果 A 点到原点(0,0,0)的距离大于 B 点到原点的距离则 A>B 的值为真,否则为假。 提示:(1)定义类的构造函数,带默认参数 (2) 关于文件包含的特别说明:在 VC++6.0 下要用#include
包含头文件才支持友元,但是在本系统中,请仍然用: #include using namespace std; 进行文件包含,否则会出现编译时的告警,尽管运行结果可以正确通过. (3) 主函数定义提示: int main() { int a,b,c; int o,p,q;//用于两个点的坐标值从键盘输入 „„//输入以上6个整数 point p1(a,b,c),p2(o,p,q);//定义两个对象名为p1,p2 „„//调用重载的<<运算符输出p1,p2 „„//调用重载的>运算符比较p1,p2到原点的距离并按格式输出 return 0; } 在保存并预览之后,点开:“测试用例”选项卡,再选择下方的“添加”,加入两组测试用例 第一个测试用例,输入部分: 10 10 20 15 15 1 0 输出部分:(10,10,20) (15,15,10) p1>p2:1 p2>p1:0 第二个测试用例,输入部分:20 20 10 15 15 20 输出部分:(20,20,10) (15,15,20) p1>p2:1 p2>p1:0 参考源程序代码 #include using namespace std; //说明:在VC++下用#include进行文件包含 class point { int x,y,z; public: point(int xx=0,int yy=0,int zz=0) { x=xx; y=yy; z=zz; } int operator >(const point &ob); friend ostream &operator<<(ostream &out,const point &ob); }; 参考源代码仅供老师参考,不要添加到系统中 int point::operator >(const point &ob) { int d1,d2; d1=x*x+y*y+z*z; d2=ob.x*ob.x+ob.y*ob.y+ob.z*ob.z; return d1>d2; } ostream &operator<<(ostream &out,const point &ob) { out<<"("<>a>>b>>c; cin>>o>>p>>q; point p1(a,b,c),p2(o,p,q); cout<p2:"<<(p1>p2)<p1:"<<(p2>p1)<