我写了以下代码:
#include <iostream>
using namespace std;
class A
{
int i;
public:
A(int ii = 0) : i(ii) {}
A(const A& a)
{
i = a.i + 1;
cout << i << endl;
}
};
A f(A a)
{
A a2 = a;
return a2;
}
int main()
{
A a1;
A a2;
a2 = f(a1);
return 0;
}
用g++
编译它(没有额外的标志,如果我添加-O0标志,结果相同)并运行结果:
1
2
在VS2010 pro中编译:
1
2
3
这里发生了什么?