我试图了解这种分配在 c++ 中是如何工作的:
Test other = toto();
这是完整的代码源:
#include <iostream>
class Test
{
public:
Test()
{
j = i++;
std::cout<<"default constructor "<<j<<std::endl;
}
Test(const Test&)
{
std::cout<<"constuctor by copy "<<j<<std::endl;
}
Test & operator=(const Test&)
{
std::cout<<"operator = "<<j<<std::endl;
return *this;
}
int j;
static int i;
};
int Test::i = 0;
Test toto()
{
Test t;
return t;
}
int main()
{
Test other = toto();
std::cout<<other.j<<std::endl;
Test another;
return 0;
}
代码没有通过复制或运算符 = 使用构造函数,所以我真的不明白它是如何工作的......我使用了 gcc 4.7.0
感谢您的帮助:)
杰罗姆