c++中,在一个类中参数传递中出现的一个问题设计一个类CRectangle,除了有关的数据成员外,该类还要求包含下述成员函数:矩形从一个位置移动到另外一个位置的Move()函数,改变矩形大小的Size

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/24 13:26:09
c++中,在一个类中参数传递中出现的一个问题设计一个类CRectangle,除了有关的数据成员外,该类还要求包含下述成员函数:矩形从一个位置移动到另外一个位置的Move()函数,改变矩形大小的Size

c++中,在一个类中参数传递中出现的一个问题设计一个类CRectangle,除了有关的数据成员外,该类还要求包含下述成员函数:矩形从一个位置移动到另外一个位置的Move()函数,改变矩形大小的Size
c++中,在一个类中参数传递中出现的一个问题
设计一个类CRectangle,除了有关的数据成员外,该类还要求包含下述成员函数:矩形从一个位置移动到另外一个位置的Move()函数,改变矩形大小的Size()函数,返回矩形左上角的坐标的Where()函数,计算矩形面积的Area()函数.
我写这个程序的思路是:
Move()函数是把矩形整体移动.
Size()函数是把左上角和右下角两个坐标向外移动.比如左上角坐标和右下角坐标分别是(1,1),(2,0),那么利用Size()函数中的两个参数 1 1 以后,就变成(0,2),(3,-1).
Where()函数是把左上角的坐标输出来.
在主函数中,首先输入矩形的两个角落的坐标,然后在此基础上移动,而原来的坐标是不改变的.
然后在调用了改变矩形大小的Size()函数(这个函数中两个角落的坐标还是原来的坐标),但是.我输入了两个参数给Size()函数以后,问题就出现了.问题是输出的时候横坐标和纵坐标的位置颠倒了,而且横坐标的值变成了0,但是纵坐标的值却是利用参数改变了以后的值.所以后面的Area()函数也就跟着出现了错误(我的意愿是Area()函数是计算我改变矩形大小以后的面积,不是原来矩形的面积).
void CRectangle::Size(double X,double Y)
{
p1=((p1.getx()-X),(p1.gety()+Y)); //有问题的地方
p2=((p2.getx()+X),(p2.gety()-Y)); //由问题的地方
cout

c++中,在一个类中参数传递中出现的一个问题设计一个类CRectangle,除了有关的数据成员外,该类还要求包含下述成员函数:矩形从一个位置移动到另外一个位置的Move()函数,改变矩形大小的Size
你程序的问题出在于:
p1=((p1.getx()-X),(p1.gety()+Y)); //有问题的地方
p2=((p2.getx()+X),(p2.gety()-Y)); //由问题的地方
因为你没有重载Point类的赋值函数,执行 p1=((p1.getx()-X),(p1.gety()+Y));时,会进行复制构造函数的操作,也就是说系统会现调用构造函数生成一个临时变量(是具体编译平台,有些不生成临时变量),再将临时变量赋给P1,这里执行过程中出错了.
解决方法1:
将 p1=((p1.getx()-X),(p1.gety()+Y)); //有问题的地方
改成:
double x_val,y_val;
x_val=p1.getx();
y_val=p1.gety();
Point pTemp(x_val-X,y_val-Y);
p1=pTemp;
解决方法2:
写个Point赋值的重载函数.
void operator()(double x1,double y1)
{
x=x1;
y=y1;
}
将 p1=((p1.getx()-X),(p1.gety()+Y)); //有问题的地方
改成:
p1((p1.getx()-X),(p1.gety()+Y));

c++中,在一个类中参数传递中出现的一个问题设计一个类CRectangle,除了有关的数据成员外,该类还要求包含下述成员函数:矩形从一个位置移动到另外一个位置的Move()函数,改变矩形大小的Size 如何在MATLAB中实现函数间的参数传递有例子最好function A和function B在一个m文件里,然后需要在这个m文件中实现A中得到的参数交给B,作为B的运算条件,即调用该m文件的结果已经实现了参数的传 Matlab的函数中如何实现按引用传递参数? 交流电于直流电怎样在一个回路中传递 c++中向量如何作参数传递 将两维数组int[10][20]传递给一个函数是如何定义函数参数?在函数中如何引用a[i][j 指针和引用能否一起使用,比如说函数参数中出现*&类型的形参怎么解释例如在C++中有一个函数形参申明为(类名 *&P),那P指的是什么? 简单c++习题1.创建一个程序,计算出“that”这个单词在文本文档中出现的次数(使用string类操作符“==”来找这个单词.2.创建两个函数,一个传递string*,一个传递string&.每一个函数都能够修改函 怎样理解这句话,我是c语言初学者!在C语言中,数组参数是以引用形式进行传递的,也就是传址调用(尤其是这句话),而标量和常量则是按值传递的. 在三位数中,至少出现一个9的奇数有 matlab 解一元非线性方程 参数传递疑问在对一组信号做处理时,需要把之前解得的方差、均值等结果,赋值到一个非线性方程中求解,方程如下:log(x/a)-(b/a)^2/(c/d)^2*log(x/d)=0其中,a、b、c、d为之前 编写一个程序.有一个汽车类vehicle,它具有一个需传递参数的构造函数,汽车类vehicle中的数据成员为:车轮个数wheels和车重weight放在保护段中,汽车类vehicle中的公有成员函数为:get_wheels()(返回 PSPICE中电压源有一个叫TRAN的参数, 在DNA复制和基因表达中,怎样避免遗传信息的传递出现差错? 怎么在Matlab中运算参数矩阵,准确的说是 我的矩阵里面去是参数 要求的矩阵也是一个参数矩阵 excel中怎样统计一个两位数在一列数据中出现的次数?---------A-----------B--------------C---------------D--------------E--------------F-------------1 1232 2343 1274 219我想统计一个两位数在一列数据中出现的次数.如: 可不可以同时传递两个参数?我想用一个option 同时往数据库中写两个参数,分别写入到一个表中的两个字段.一个是汉字,一个是数字,可以吗?如果可以代码怎么写? 在C#中关于传递参数ref和out分别有什么区别