我 在C++中遇到了关于复制椭圆的这篇文章,我在boost库中看到过关于它的评论.这很有吸引力,因为我更喜欢我的功能
verylargereturntype DoSomething(...)
Run Code Online (Sandbox Code Playgroud)
而不是
void DoSomething(..., verylargereturntype& retval)
Run Code Online (Sandbox Code Playgroud)
所以,我有两个问题
我不会仅仅使用复制椭圆来美化事物,但如果能保证它能够起作用,那么它听起来非常有用.
我认为这是一个非常普遍应用的优化,因为:
如果您只是好奇,请printf()
在您的复制构造函数中进行调试:
class foo {
public:
foo(): x(0) {};
foo(int x_) : x( x_) {};
foo( foo const& other) : x( other.x) {
printf( "copied a foo\n");
};
static foo foobar() {
foo tmp( 2);
return tmp;
}
private:
int x;
};
int main()
{
foo myFoo;
myFoo = foo::foobar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我运行未经优化的构建时,打印出"复制了一个foo",但在构建优化时没有任何内容.