关于《Inside The C++ Object Model》中NRV(Named Return Value)优化的问题。
本人现正在研读《Inside The C++ Object Model》当读到P66 NRV优化时,从书中可以得出以下结论:要想激活NRV优化必须得提供拷贝构造函数!我百思不得其解。希望有熟悉这方面的高人们给以指点。
为方面大家回答,先把原书中的例子给大家:
X为一个类:
X bar()
{
X xx;
//处理xx.........
return xx;
}
通过NRV优化则是把以上代码改变为以下形式,编译器把其中的xx以_result取代:
void bar( X & _result)
{
_result.X:X(); //调用X类的默认构造函数,初始化_result
//处理_result.......
return; //直接返回
}
这就是所谓的NRV优化,但俺从中看不出任何地方调用了什么拷贝构造函数。希望哪位看过此书的高人们能给解答一下?