c++命名的返回值省略

示例

如果从函数返回左值表达式,则此左值:

  • 表示该函数局部的自动变量,将在 return

  • 自动变量不是函数参数

  • 并且变量的类型与函数的返回类型相同

如果所有这些都成立,那么可以取消从左值的复制/移动:

std::string func()

{

  std::string str("foo");

  //做东西

  return str;

}

更复杂的情况适合进行省略,但情况越复杂,编译器实际淘汰它的可能性就越小:

std::string func()

{

  std::string ret("foo");

  if(some_condition)

  {

    return "bar";

  }

  return ret;

}

编译器仍然可以忽略ret,但是这样做的机会降低了。

如前所述,值参数不允许省略。

std::string func(std::string str)

{

  str.assign("foo");

  //做东西

  return str; //不可能省略

}

           

以上是 c++命名的返回值省略 的全部内容, 来源链接: utcz.com/z/334580.html

回到顶部