我不确定如何陈述我的问题,但是我们开始...

因此,我有一个此类,其中operator[]的正文为空(尚未实现)。不过,当我从main()调用它时,它会产生一个输出。此外,输出正是在上一行中分配给它的输出。

EDIT:我添加了一个名为emptyValue的私有属性,并在类构造函数中将其初始化为TipVrijednosti()

例子如下:

  template<typename TipKljuca, typename TipVrijednosti>
    class BinStabloMapa : public Mapa<TipKljuca, TipVrijednosti>
    {
            .
            .
        TipVrijednosti &operator[] (const TipKljuca &kljuc) {
            return emptyValue;
        }
        const TipVrijednosti &operator[] (const TipKljuca &kljuc) const {
            return emptyValue;
        }
            .
            .
    }

    int main()
    {
        BinStabloMapa<int, int> m;
        m[100] = 200;
        cout << m[100] << endl;
        return 0;
    }

    OUTPUT: 200


有人可以告诉我为什么会这样吗?

最佳答案

您有未定义的行为,因为您没有从具有非void返回类型的函数返回任何内容。

第6.6.3节:


  从函数末尾流出就等于没有值的返回;这导致返回值函数中的行为不确定。


§1.3.24:


  未定义的行为
  本国际标准没有规定的行为

08-16 00:43