我设法将我的代码问题缩小到了:
class A{
private:
int a;
public:
A(){};
A(int i){a=i;};
const char* str(){
std::stringstream ss;
ss << this << "->" << a;
return ss.str().c_str();
};
};
int main(){
A test[2] = {A(42), A(99)};
printf("%s,%s\n",test[0].str(),test[1].str());
printf("%s,",test[0].str());
printf("%s",test[1].str());
return 0;
}
令人惊讶的是,打印出这个:
0x7ffff5b574a0->42,0x7ffff5b574a0->42
0x7ffff5b574a0->42,0x7ffff5b574a4->99
为什么会这样?是printf故障吗?请赐教。