我想知道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()
),因为它可以在我的main()
函数中打印出来即使不是static
?我假设它不是指针,因为我可以size()
通过使用.
运算符而不是->
用于指针的运算符来访问该方法。
&
其次,在函数参数中使用运算符与使用运算符有什么区别*
?它甚至与像这样的普通变量不同std::string param
吗?它似乎被称为(foo(test)
而不是foo(&test)
)。