重複の可能性:
参照渡し時のポインターの逆参照
関数への参照渡し時にポインタを逆参照するときに、コピー コンストラクタが呼び出されますか?
ここに簡単な例があります
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 コピー コンストラクターが呼び出された場合、一時オブジェクトが生成され、その参照が使用されます。これは、未定義の動作という形で非常に悪いニュースになります...
では、何が起こるのでしょうか...未定義の動作ですか?