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

标签 c++ pointers reference

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

这是一个简单的例子

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 引用参数,因此该函数接收对指针指向的对象的引用,并返回对该对象的引用。这种行为是明确定义的,并且不涉及临时对象。

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

关于c++ - 通过引用传递时取消引用指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11347111/

相关文章:

C++,输出时移动一个NaN到数组末尾

c++ - qt5.4在linux for windows上交叉编译

php - Parse.com - Parse PHP SDK - 如何通过指针字段查询数据?

c++ - 指向根的二叉树指针需要被引用和取消引用。为什么?

C++ 错误 : "member Engine::x is not a type name"

c++ - 数组结构

c# - 在 C# 中使用指针进行调试

c - fread 在c中用随机字符填充字符串

按值或按(常量)引用返回原语的 C++ 性能

java - 如何删除传递给 Java 方法的对象?