c++ 类构造函数 这样写为何结果是异常的呢
c++ 类构造函数 这样写为何结果是错误的呢?
初学c++,我在尝试的时候发现下边的类构造函数的函数原型
Move:: Move(double a ,double b)
{
cout<<"enter two value: \n";cin>>a>>b;//错误在这儿,只要把这句去掉后边main()中的mm=aa.add(m)就可以正常。
x=a;
y=b ;
}
当我把 cout<<"enter two value: \n";cin>>a>>b;去掉,后边main()中的
Move mm;
mm=aa.add(m);
mm.showmove();
就能得出正确答案,否则就是错的。
不得不承认我写这句纯属多余,但是试了以后觉得奇怪,为什么会产生这样的情况,希望论坛上的前辈能帮我
解释一下这个疑惑。。非常感谢!
------解决思路----------------------
本来那句就不对,你在先前已给出了a,和b的值,“cin>>a>>b;”这一句子又是给a和b的值就冲突了
------解决思路----------------------
AD里改一下改成
double x1=x+m.x;
double y1=y+m.y;
Move f;
f.x=x;
f.y=y;
return f;
初学c++,我在尝试的时候发现下边的类构造函数的函数原型
Move:: Move(double a ,double b)
{
cout<<"enter two value: \n";cin>>a>>b;//错误在这儿,只要把这句去掉后边main()中的mm=aa.add(m)就可以正常。
x=a;
y=b ;
}
当我把 cout<<"enter two value: \n";cin>>a>>b;去掉,后边main()中的
Move mm;
mm=aa.add(m);
mm.showmove();
就能得出正确答案,否则就是错的。
不得不承认我写这句纯属多余,但是试了以后觉得奇怪,为什么会产生这样的情况,希望论坛上的前辈能帮我
解释一下这个疑惑。。非常感谢!
#include<iostream>
using namespace std;
class Move
{
private:
double x;
double y;
public:
Move(double a=0,double b=0);
void showmove()const;
Move add(const Move & m) const;
void reset(double a=0,double b=0);
} ;
//开始函数原型说明
Move:: Move(double a ,double b)
{
cout<<"enter two value: \n";cin>>a>>b;//错误在这儿,只要把这句去掉后边main()中的mm=aa.add(m)就可以正常。
x=a;
y=b ;
}
void Move::showmove()const
{
cout<<"now let's see the result: "
<<"x = "<<x <<";"<<" y = "<<y<<endl;
}
Move Move::add(const Move & m) const
{
double x1=x+m.x;
double y1=y+m.y;
return Move(x1,y1);
}
void Move::reset(double a, double b)
{
x=a;
y=b;
}
//main实现
int main()
{
Move m(2,5);
m.showmove();
Move aa(1,3);
aa.showmove();
Move mm;
mm=aa.add(m);
mm.showmove();
mm.reset(1,12);
mm.showmove();
mm.reset();
mm.showmove();
system("pause");
return 0;
}
------解决思路----------------------
本来那句就不对,你在先前已给出了a,和b的值,“cin>>a>>b;”这一句子又是给a和b的值就冲突了
------解决思路----------------------
AD里改一下改成
double x1=x+m.x;
double y1=y+m.y;
Move f;
f.x=x;
f.y=y;
return f;