返回类型不是void的函数中的每个返回都必须 返回一个值。返回的值必须与 函数返回类型,或者必须具有可隐式的类型 转换为该类型。 - C ++ Primer
struct Person
{
const std::string & getName() const { return name; }
std::string name;
};
问:在函数getName()
中,返回的值是否与函数返回类型具有相同的类型?
答案 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
的引用,因此返回的值确实与返回类型匹配。