【发布时间】:2012-07-05 15:19:12
【问题描述】:
在通过引用传递函数时取消引用指针时是否调用了复制构造函数?
这是一个简单的例子
int& returnSame( int &example ) { return example: }
int main()
{
int inum = 3;
int *pinum = & inum;
std::cout << "pinum: " << returnSame(*pinum) << std::endl;
return 0;
}
我猜怎么回事:
当我们取消引用 pinum 时,我们希望调用复制构造函数,但是由于函数是按值传递的,所以不会调用它?
如果调用 pinum 复制构造函数,则将生成一个临时对象并使用该对象的引用,这将是未定义行为形式的非常坏消息...
那么会发生什么...未定义的行为?
【问题讨论】:
-
@Oli Charlesworth 该问题因多个拼写错误而关闭
-
@MWright 该问题已关闭,因为它“模棱两可、含糊、不完整、过于宽泛或修辞”。
-
标记为合并请求。
-
@MWright - 关闭不是永久性的。投票可以重新打开您可以标记的问题并说明您已修复问题,以便版主重新打开它
标签: c++