因为这条语句有问题,应当属于C++标准规定的未指定行为(fix me)
position = temp.setNum(11) + ", " + temp.setNum(22);
换个写法其实就是:
position = operator +(operator +(temp.setNum(11), ", "), temp.setNum(22));
调用了两个函数:
const QString operator+ ( const QString & s1, const char * s2 )
const QString operator+ ( const QString & s1, const QString & s2 )
对你的编译器来说,这条语句应该生成 11, 11 换其他编译器也可能会得到 11, 22
取决于你所用编译器对函数参数的求值顺序。
或许你可以瞄一眼:
http://hi.baidu.com/cyclone/blog/item/aa56e5dd1c3cf9e276c638fa.html