什么是命名对象?

4 c++

在谈论返回值优化(RVO)时,各种文本都提到了与命名对象的返回相关的异常情况.简而言之:

  • 这些是什么?
  • 在当前的c ++标准中是否有该术语的定义?

旁注:我试图添加以下标签:RVO和NRVO,但由于缺乏声誉点,我无法正确使用此帖子

Han*_*ant 5

命名对象就像听起来一样:

  someclass foo() {
    someclass foo;
    foo.member = 42;
    return foo;
  }
Run Code Online (Sandbox Code Playgroud)

相反:

  someclass foo() {
    return someclass(42);
  }
Run Code Online (Sandbox Code Playgroud)

后一种情况很容易优化.