c++ - T const & 在函数的返回类型中意味着什么?

标签 c++ constants

下面的函数原型(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/

相关文章:

C++ std::accumulate 没有给出预期的总和

go - 为什么我们不能在 const 中声明一个映射并在后面填充它?

c++ - 指针和引用作为 const 对象的成员变量

c++ - boost::shared_ptr<const T> 到 boost::shared_ptr<T>

javascript - 如何从 javascript xpcom 组件使用 C++ xpcom 组件

c++ - QT : How to determine if the event processor is busy

c++ - 在数组C++中读取数组内部的项目

c++ - 修补 C/C++ 函数以仅返回而不执行

c++ - 应用于 const 和非常量对象的引用返回方法

javascript - 你能在 JavaScript 中使用常量变量吗?