在通过引用传递函数时取消引用指针会发生什么?
这是一个简单的例子
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/