我正在使用一个我无法更改的库,并且已经设置了一个完成库的任务。
虽然我完成了任务并且它有效,但我并不理解为什么它有效以及我是否应该这样做。
我在cpp文件中有一个函数
void Foo (const String &someName)
{
OtherFoo (&someName)
}
其中Foo传递对const字符串的引用,而OtherFoo需要一个指向要传递给它的const字符串的指针。
所以基本上ref是const string&
,需要作为const指针传递给OtherFoo(const &
到const *
)
我做得好吗? (将ref的地址传递给需要指向const字符串的指针的函数)
我是如何通过论证的?有人可以解释为什么它有效吗?
非常感谢
答案 0 :(得分:2)
是的,这是一种正确的方法。实际上,取一个引用的地址实际上会产生the address of the referent。
因此,在这种情况下,表达式&someName
的类型实际上是const String *
。
注意不要混合指针的常量和指针的常量。在这种情况下,当你说“const指针”时,它实际上是指向const的指针,这不是一回事。