来自 C# 背景,我或多或少对 C++ 中返回方法处理的看似奇怪的行为感到困惑。我现在关心的是 C++ 中的方法,通过引用返回不是一种非常有用的技术,这是因为——与 C# 不同——一旦控件退出方法,在方法体内声明的任何变量都将超出范围。
因此,在 C++ 中,this甚至无法编译(但 C# 中的等效版本可以):
int& DoubleValue(int nX)
{
int nValue = nX * 2;
return nValue; // return a reference to nValue here
} // nValue goes out of scope here
只有当您返回对类中现有数据成员的引用或返回对方法参数内元素的引用时,按引用返回才有用。但是在这两种情况下,实际上都不需要返回任何东西;因为返回的引用已经可供方法的调用者免费使用。
所以,我的结论是,根本没有必要使用引用返回。我说得对吗?
最佳答案
像std::vector<>::operator[]
这样的操作返回对通过取消引用指针(并向其添加偏移量)获得的元素的引用。这种情况下的指针是 private
vector
的内部成员,因此用户无法在不破坏类抽象的情况下获得自己的东西。
关于c++ - 通过引用返回没有用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4778365/