定义一个矩形类,数据成员包括左下角和右上角坐标,定义的成员函数包括必要的构造函数、输入坐标的函数,以及计算并输出矩形面积的函数。要求使用提示中给出的测试函数并不得改动。
定义一个矩形类,数据成员包括左下角和右上角坐标,定义的成员函数包括必要的构造函数、输入坐标的函数,以及计算并输出矩形面积的函数。要求使用提示中给出的测试函数并不得改动。
四个数,分别表示矩形左下角和右上角顶点的坐标,如输入3.7 0.4 6.5 4.9,代表左下角坐标为(3.7, 0.4),右上角坐标为(6.5, 4.9)。
输出一共有3行(请参考提示(hint)中的main函数):
第一行:由输入的坐标确定的矩形对象p1的面积
第二行:由对象复制得到的矩形对象p2的面积
第三行:直接初始化得到的矩形对象p3的面积
3.7 0.4 6.5 4.9
12.6
12.6
10
int main()
{
Rectangle p1;
p1.input();
p1.output();
Rectangle p2(p1);
p2.output();
Rectangle p3(1,1,6,3);
p3.output();
return 0;
}
代码如下:
#include <iostream> #include <cmath> using namespace std; class Rectangle { public: Rectangle (double a=0,double b=0,double c=0,double d=0); Rectangle (Rectangle &p); void input(); void output(); private: double x1; double y1; double x2; double y2; }; Rectangle::Rectangle(double a,double b,double c,double d) { x1=a; y1=b; x2=c; y2=d; } void Rectangle::input() { double a,b,c,d; cin>>a>>b>>c>>d; x1=a; y1=b; x2=c; y2=d; } Rectangle::Rectangle(Rectangle &p) { x1=p.x1; y1=p.y1; x2=p.x2; y2=p.y2; } void Rectangle::output() { cout<<fabs((x2-x1)*(y2-y1))<<endl; } int main() { Rectangle p1; p1.input(); p1.output(); Rectangle p2(p1); p2.output(); Rectangle p3(1,1,6,3); p3.output(); return 0; }
运行结果:
学习心得:
之前学习构造函数的时候没注意过用对象去给对象赋值的操作,但是这周的第一个项目有个与两个对象有关的操作,于是仿照那个去做,结果连编译都通过不了,最后还是选择了问度娘,原来自己函数Rectangle::Rectangle(Rectangle &p)少了一个&(当然函数内部的定义也不同,用了this指针),一直没发现&的大用处,现在终于知道了T.T。
原文地址:http://blog.csdn.net/liuchang54/article/details/44918353