下面的函数原型(prototype)有什么样的返回类型?
int const& myfunctionname(int i)
我在这里没有使用 const 和 &。如果我要返回对象/数组/基本上是非局部变量,如果我想返回对象的位置,我应该使用指针还是引用?
最佳答案
这意味着您要返回对无法更改的值的引用。
如果您返回对局部变量的引用,那么您将遇到问题,因为它将引用不再存在的内容:
int const &GetValue()
{
int x = 10;
return x; // THIS IS BAD!
}
此外,返回对整数类型(int、long 等)的 const 引用实际上没有意义,因为它们首先占用的空间与引用几乎相同。但是,如果您这样做了,那就没什么大不了的。
如果您要返回非本地数据(即成员数据),那么如果数据始终存在则使用引用,如果数据可能不存在则使用指针,这样 NULL
表示不存在的数据。例如:
const std::string &User()const
{
return m_Username;
}
int Age() const
{
return m_Age; // Pointless to use a reference here
}
const Person *Partner()const
{
return m_Parter; // User may not have a partner, so pointer
}
如果您不希望调用者能够修改返回的对象,请将指针或引用设为const
。
关于c++ - T const & 在函数的返回类型中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21202964/