标题:以下代码是否符合题意
取消只看楼主
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
结帖率:90.38%
已结贴  问题点数:20 回复次数:4 
以下代码是否符合题意
下面是一个类声明,
程序代码:
class Move{
    private:
        double x;
        double y;
    public:
        Move(double a=0,double b=0);//set x,y to a,b
        showmove() const;           //shows current x,y values
        Move add(const Move &m)const;
        //this function adds x of m to x of invoking object to get new x,
        //adds y of m to y of invoking object to get new y,creates a new move object initialized to new x,y values and returns it.
        reset(double a=0,double b=0);   //resets x,y to a,b
};

请提供成员函数的定义和测试这个类的程序。

以上就是题目。
代码如下:
程序代码:
#include<iostream>
using namespace std;
class Move{
    private:
        double x;
        double y;
    public:
        Move(double a=0,double b=0);
        showmove() const;        
        Move add(const Move &m)const;

        reset(double a=0,double b=0);   
};
Move::Move(double a,double b){
    x=a;
    y=b;
}
Move::showmove()const{
    cout<<"x值:"<<x<<endl;
    cout<<"y值:"<<y<<endl; 
}
Move Move::add(const Move &m)const{
    Move invoking;
    invoking.x=m.x;
    invoking.y=m.y;
    Move aaa(x,y);
    return (x,y);
}
Move::reset(double a,double b){
    x=a;
    y=b;
}
int main(){    
    Move bbb;
    bbb.showmove();
    double x,y;
    cout<<"输入x值:";
    cin>>x;
    cout<<"输入y值:";
    cin>>y;
    Move ccc(x,y);
    ccc.add(ccc);
    ccc.reset(x,y);
    ccc.showmove();
    return 0;
}
搜索更多相关主题的帖子: 代码 const Move cout double 
2021-02-04 15:56
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
得分:0 
以下是引用rjsp在2021-2-4 16:52:49的发言:

这是什么?

这是个错误的写法,原本要返回aaa这个对象。是不是要改为这样:
    Move aaa(x,y);
    return aaa;
2021-02-04 19:31
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
得分:0 
以下是引用rjsp在2021-2-4 20:38:21的发言:

改为
Move Move::add(const Move& m) const
{
    return Move(x+m.x, y+m.y);
}

下面这行
return Move(x+m.x, y+m.y);

当中的Move是个带2个参数进行初始化的对象吗?这个对象来自于哪里?


另外如果改为这样,那是不是就少了题目中要求的invoking对象?
2021-02-04 21:14
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
得分:0 
以下是引用rjsp在2021-2-4 20:38:21的发言:

改为
Move Move::add(const Move& m) const
{
    return Move(x+m.x, y+m.y);
}

以下这行
return Move(x+m.x, y+m.y);
当中的Move对象是来自以下这行this指针函数所创建的对象是吗?
Move Move::add(const Move& m) const
即由红色字体部分所创建的对象,是这样吗?

另外8楼的写法是否也符合题意?

[此贴子已经被作者于2021-2-6 19:15编辑过]

2021-02-06 19:02
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
得分:0 
回复 10楼 rjsp
即返回语句中的Move对象是在哪里创建的?哪一行语句创建了Move这个对象?
2021-02-07 09:45



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-504817-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.226161 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved