【问题标题】:C++ The function doesn't work correctly if there is no valueC++ 如果没有值,函数就不能正常工作
【发布时间】:2022-06-10 23:27:58
【问题描述】:

我编写了这段代码来使用类计算平均值。

    #include <iostream>
    #include <cstdint>
    
    class Average
    {
    private:
        int32_t m_total;
        int8_t m_numbers;
    
    public:
        Average()
        {
        }
    
        Average operator+= (int value);
    
        friend std::ostream& operator<<(std::ostream& out, const Average& average)
        {
            out << static_cast<double>(average.m_total / average.m_numbers);
            return out;
        }
    };
    
    Average Average::operator+= (int value)
    {
        m_total += value;
        ++m_numbers;
        return *this;
    }
    
    int main()
    {
        Average avg; avg += 5;
        std::cout << avg << '\n';
        avg += 9; std::cout << avg << '\n';
        avg += 19; std::cout << avg << '\n';
        avg += -9; std::cout << avg << '\n';
    
    
        (avg += 7) += 11;
        std::cout << avg << '\n';
        Average copy = avg; std::cout << copy << '\n';
        return 0;

结果是

    1.6843e+07
    1.71799e+07
    1.75305e+07
    1.78957e+07
    1.82765e+07
    1.82765e+07

这不是我想要的。 设置值改变了情况。

    private:
        int32_t m_total = 0;
        int8_t m_numbers = 0;

但我不明白为什么。是否有一些规则必须设置值才能工作?

【问题讨论】:

  • “是否有一些规则必须设置值才能工作?” - 是的。是的,有

标签: c++


猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-03
  • 1970-01-01
  • 2014-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多