复制构造函数未定义的行为

时间:2014-02-19 20:28:24

标签: c++

我写了以下代码:

#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

这里发生了什么?

0 个答案:

没有答案