返回的值必须与函数返回类型的类型相同?

时间:2017-04-13 02:13:24

标签: c++ c++11 reference

  

返回类型不是void的函数中的每个返回都必须   返回一个值。返回的值必须与   函数返回类型,或者必须具有可隐式的类型   转换为该类型。 - C ++ Primer

struct Person 
{
   const std::string & getName() const { return name; }
   std::string name;
};  

问:在函数getName()中,返回的值是否与函数返回类型具有相同的类型?

3 个答案:

答案 0 :(得分:1)

const std::string & getName() const { return name; }

此函数将引用返回到name

  

引用是一种简单的引用数据类型,它比从C继承的指针类型更强大但更安全.C ++中引用的定义使得它不需要存在。它可以作为现有对象的新名称实现(类似于在Ada中重命名关键字)。

有关详细信息,请参阅:https://en.wikipedia.org/wiki/Reference_(C%2B%2B)

答案 1 :(得分:0)

  

问:在函数getName()中,返回的值是否与函数返回类型具有相同的类型?

是。否则,编译器会通知您。如果编译器没有抱怨,您可以放心,它能够从您在return语句中使用的任何表达式返回正确的类型。

答案 2 :(得分:0)

  

在函数getName()中,返回的值是否与函数返回类型具有相同的类型?

(否则代码无法编译)。

getName()被声明为返回const std::string &,它是const std::string对象的非const 引用

const声明末尾的getName()表示this内的getName()指针是const,因此每个成员也被视为const。

由于this->name实际上是const std::string,而getName()返回对const std::string的引用,因此返回的值确实与返回类型匹配。