函数的顺序重要吗

Does the order in which my functions matter?

本文关键字:顺序 函数      更新时间:2023-10-16

我无法解释为什么我得到这个逻辑错误!看一下:

在header -

class PayRoller
{
public:
    void initialize();
    double getNum();
    void setNum(double);
    double getGrossPay();
    void setGrossPay(double);
    double getWage();
    void setWage(double);
    double getAddTotal();
    void setAddTotal(double);
}

这是创建对象后调用的第一个函数-

void PayRoller::initialize();
{
    setGrossPay(0.0);
    setWage(0.0);
    setAddTotal(0.0);
    cout << (getGrossPay() + getAddTotal());
    start();
}

最后这里是getter和setter -

void PayRoller::setGrossPay(double temp)
{
grossPay = temp;
}
double PayRoller::getWage()
{
return wage;
}
void PayRoller::setWage(double temp)
{
wage = temp;
}
double PayRoller::getAddTotal()
{
return addTotal;
}
void PayRoller::setAddTotal(double temp)
{
wage = temp;
}

当我启动代码时(没有调试),我从cout中得到的值在initialize()中为- 9.255996 e+061

我在这里做错了什么?我似乎弄不明白。提前感谢!

你的setAddTotal方法没有设置addTotal,它设置的是工资。

void PayRoller::setAddTotal(double temp)
{
    wage = temp;
}
应该

void PayRoller::setAddTotal(double temp)
{
    addTotal = temp;
}

否则,addTotal实际上不会被设置为0,它只是包含垃圾。

您需要废弃initialize()方法并使用成员初始化列表

你所说的初始化实际上是赋值,初始化只能在成员初始化列表中进行。您需要的是初始化,即:在创建时将值绑定到成员,而不是在创建后将值赋给成员

赋值方法的问题在于,您需要依赖类的用户以您定义的方式调用方法,而他们可能不会。

似乎精度问题数几乎为0。尝试将值更改为long或int,这可以验证。