为什么返回值优化需要显示的提供一个子copy constructor,,,但是又不调用它呢?
class RVO
{
public:
RVO(){printf("I am in constructor\n");}
RVO (const RVO& c_RVO) {printf ("I am in copy constructor\n");}
~RVO(){printf ("I am in destructor\n");}
int mem_var;
};
RVO MyMethod (int i)
{
RVO rvo;
rvo.mem_var = i;
return (rvo);
}
int main()
{
RVO rvo;
rvo=MyMethod(5);
}
若启用 NRVO (cl /O2 sample1.cpp),预期输出将是:
I am in constructor
I am in constructor
//并不调用copy constructor
I am in destructor
I am in destructor
以上只是网上看到的,,,尚没有验证过,,,因为偶不知道如何打开VC 。NET 2003里的优化设置,
我把全部的优化都打开了,为何还是跟没有优化过的一样呢?不知道哪里出错了,步骤是这样的吗?
项目属性--->C/C++-->优化....
本人比较菜点,,,大家说的详细一下啊。。。谢谢哈哈