问题遇到的现象和发生背景
C++,使用CodeBlocks,为何在函数内输出和函数外输出结果不一样?
问题相关代码,请勿粘贴截图
//sport.h
#ifndef SPORT_H
#define SPORT_H
class sport{
private:
double position;
double velocity;
double acceleration;
public:
void setAcceleration(double tmp);
void setVelocity(double tmp);
void setPosition(double tmp);
double getPosition() const;
double getVelocity() const;
double getAcceletation() const;
};
#endif // SPORT_H
//sport.cpp
#include "sport.h"
void sport::setPosition(double p)
{
position = p;
}
void sport::setVelocity(double v)
{
velocity = v;
}
void sport::setAcceleration(double a)
{
acceleration = a;
}
double sport::getAcceletation()const
{
return acceleration;
}
double sport::getPosition()const
{
return position;
}
double sport::getVelocity()const
{
return velocity;
}
//main.cpp
#include <iostream>
#include "sport.h"
#include <iomanip>
using namespace std;
double A_V(sport &obj,double t)
{
double k = 1;
double stime,tmp_v,tmp_a;
stime = t;
tmp_v = obj.getVelocity() + obj.getAcceletation() * stime;
tmp_a = - k * tmp_v;
obj.setAcceleration(tmp_a);
obj.setVelocity(tmp_v);
return tmp_v;
}
double X_V(sport &obj,double t)
{
double tmp_p,tmp_v,stime;
stime = t;
tmp_v = obj.getVelocity();
tmp_p = obj.getPosition() + tmp_v * stime;
obj.setPosition(tmp_p);
return tmp_p;
}
int main()
{
sport obj;
obj.setVelocity(1);
obj.setPosition(0);
obj.setAcceleration(-1);
double t = 0.01,x = 0;
for(int i=0;i<1/t;i++)
{
x = x + t;
A_V(obj,t);
X_V(obj,t);
cout << X_V <<endl;
}
return 0;
}
//
运行结果及报错内容
输出结果全为 1
我的解答思路和尝试过的方法
main函数输出处改为
cout << obj.getPosition() <<endl;
或在X_V( )函数中添加代码
cout <<tmp_p<<endl;
则结果正确
我想要达到的结果
为什么会出现这种现象?