irf*_*nka 0 c++ templates cout operator-overloading generic-programming
我不确定如何陈述我的问题,但我们走了...
所以,我有这个类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
Run Code Online (Sandbox Code Playgroud)
谁能告诉我为什么会这样?
您有未定义的行为,因为您没有从具有非void返回类型的函数返回任何内容.
§6.6.3:
流出函数末尾相当于没有值的返回; 这会导致值返回函数中的未定义行为.
§1.3.24:
本国际标准没有要求的未定义行为行为