可能重复:
通过引用传递时取消引用指针
在通过引用函数传递时取消引用指针时是否调用了复制构造函数?
这是一个简单的例子
int& returnSame( int &example ) { return example: }
int main()
{
int inum = 3;
int *pinum = & inum;
std::cout << "pinum: " << returnSame(*pinum) << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我猜猜发生了什么:
当我们取消引用pinum时,我们希望调用复制构造函数,但由于函数是通过值传递的,所以不会调用它?
如果调用了pinum copy构造函数,那么就会产生一个临时对象,并且会使用它的引用,这将是一个非常糟糕的新闻,以未定义的行为形式......
那么会发生什么......未定义的行为?
| 归档时间: |
|
| 查看次数: |
1581 次 |
| 最近记录: |