c++ - 通过引用传递时取消引用指针

在通过引用传递函数时取消引用指针会发生什么?

这是一个简单的例子

int& returnSame( int &example ) { return example; }

int main()
{
  int inum = 3;
  int *pinum = & inum;

  std::cout << "inum: " <<  returnSame(*pinum) << std::endl;

  return 0;          

}

是否产生了临时对象?

最佳答案

取消引用指针不会创建拷贝;它创建一个引用指针目标的 lvalue。这可以绑定(bind)到 lvalue 引用参数,因此该函数接收对指针指向的对象的引用,并返回对该对象的引用。这种行为是明确定义的,并且不涉及临时对象。

如果它按值获取参数,那么这将创建一个本地拷贝,并且返回对其的引用将是不好的,如果访问它会给出未定义的行为。

https://stackoverflow.com/questions/11347111/

相关文章:

c++ - COM(C++) 编程教程?

c++ - GCC STL 边界检查

c++ - std::vector 是 `user-defined type` 吗?

c++ - 当两个链接的 static_cast 可以完成它的工作时,为什么我们在 C++ 中有 r

c++ - 我们可以有一个虚拟静态方法吗? (c++)

c++ - 存储未初始化的 STL vector ?

c++ - 异常处理是否需要面向对象的编程?

c++ - 我应该使用 cstdint 吗?

c++ - 从多个线程使用 stdlib 的 rand()

c++ - 在 getter 函数中返回 const 引用或拷贝?