将值传递给const参考参数?

时间:2014-04-14 00:59:16

标签: c++ pointers reference const

我还没有在这里或通过谷歌找到类似的问题,可能是因为我不知道我是否提出了正确的问题,所以不确定标题是否是对。但我正在使用看起来像这样的代码:

Foo * foo = new Foo();
add(*foo); //Couldnt find any similar questions on this syntax?

void add(const Foo & foo){

//What exactly is foo here? How can i manipulate its members, foo. or foo-> ?

} 

2 个答案:

答案 0 :(得分:3)

'富'是一个不变的参考。您可以通过foo.fred,foo.method()等访问其成员,但您无法更改任何数据成员或调用任何非const方法。

答案 1 :(得分:0)

foo方法中的变量add是一个常量引用。它的行为就像一个指针,它不会复制对象:你与它交互就好像它是对象本身一样。与指针不同,引用不能是NULL,也不能重新分配。您使用点.运算符而不是->运算符与它进行交互。

void add(const Foo & foo){
    cout << foo.first_member << endl;
    foo.const_member_function();
}

由于foo是常量引用,您可以阅读foo的成员,但无法分配它们。此外,foo引用上的任何成员函数调用仅限于明确标记为const的函数。

只要add不是foo,就可以使用解除引用的foo来呼叫NULL。通过解除引用NULL指针来进行引用是未定义的行为。