函数的顺序重要吗
Does the order in which my functions matter?
我无法解释为什么我得到这个逻辑错误!看一下:
在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,这可以验证。
相关文章:
- 函数调用中参数的顺序重要吗
- 优先顺序:智能指针和类析构函数
- C++成员的析构函数顺序与shared_ptr
- C++:使用方法调用析构函数的顺序是什么?
- 以 f() + g() 调用顺序的 C++ 函数
- 为什么用户定义的函数不按照给定的顺序对相同长度的元素进行排序?
- 有没有办法保证析构函数的相对顺序?
- 函数模板实例化、替换和重载解析的顺序是什么?
- 类内初始化与构造函数初始化列表的顺序
- 递归函数的执行顺序
- 运算符 new 的执行顺序和构造函数的参数
- 如果在 C++ 构造函数中以错误的顺序初始化对象数据,会发生什么类型的错误
- std::bind() 参数列表中函子的执行顺序(可能与函数参数的求值顺序无关)
- 构造函数中没有参数的对象类成员按什么顺序初始化?
- std::unique_ptr析构函数顺序
- C++17的可选和可变顺序函数参数
- OpenMP 不在 for 循环中的顺序函数的并行化
- 递归C++字母顺序函数重复返回相同的值
- C++-销毁顺序-函数的静态成员在主类析构函数之前被销毁
- 构造函数执行顺序/顺序:函数中静态变量(类实例)的依赖初始化