<分区>
我希望有人能向我解释为什么调用带有引用参数的函数而不是带有指针参数的函数,给出如下内容:
int Func1 ( int & a );
int Func1 ( int * a );
int main()
{
int y = 1;
int & x = y;
int * z = & y;
Func1(y); // Calls reference version
Func1(&y); // Calls pointer version
Func1(z); // Calls pointer version
return 0;
}
int Func1 ( int & a )
{
cout << "Reference param Func1 called" << endl;
a = a + 1;
return a + 1;
}
int Func1 ( int * a )
{
cout << "Pointer param Func1 called" << endl;
*a = *a + 1;
return *a + 1;
}
我对如何决定为 Func1(&y) 调用调用 Func1 的指针参数版本而不是 Func1 的引用参数版本感到困惑。另外,为什么没有为 Func1(z) 调用选择 Func1 的引用参数版本?如果 z 包含一个地址,我不明白为什么不能将该地址传递到 Func1( &a ) 的引用参数中。