<分区>
Possible Duplicate:
C++ functions: ampersand vs asterisk
What are the distinctions between the various symbols (*,&, etc) combined with parameters?
我想知道 C++ 函数调用中地址运算符 &
和引用运算符 *
之间的区别。例如采用以下功能
void foo (std::string& param)
{
param = "Bar.";
std::cout << param.size();
}
然后让我们在我们的 main()
函数中这样调用它...
int main()
{
std::string test;
foo(test); //Why not foo(&test)?
std::cout << test; //Prints out the value "Bar."
}
首先,为什么 &
运算符允许我分配一个值,就好像它是一个指针(分配给它一个在 RAII 和函数 foo() 范围内存活的值
当它不是指针时),因为即使它不是 static
也可以在我的 main()
函数中打印出来?我假设它不是指针,因为我可以使用 .
运算符而不是 ->
来访问 size()
方法用于指针。
其次,在函数参数中使用 &
运算符与使用 *
运算符有什么区别?它甚至与像 std::string param
这样的普通变量不同吗?它似乎是这样调用的(foo(test)
而不是 foo(&test)
)。