c++ - 通过引用返回没有用吗?

标签 c++

来自 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/

相关文章:

c++ - Qt如何实现一个进程循环?

c++ - 我怎么能像 numpy 那样从 MxN 矩阵中减去 1xN 特征矩阵?

c++ - 如何从 glm::mat4 中读取值

c++ - Objective-C 与 C++ 成员初始化

c++ - c++中把一个类的功能主义者分成几个类,会不会降低程序的效率?

c++ - 用C++将数据读入双数组

c++ - printf 的格式化缓冲区在哪里?

c++ - 我应该使用(未记录的?)MINIDUMP_EXCEPTION_INFORMATION64 结构来创建 64 位进程的转储吗?

c++ - 具有自定义数据类型的 STL

c++ - PCRE多行匹配问题