[英]Passing value to const reference parameter?
我无法在这里或通过谷歌找到类似的问题,可能是因为我不知道我是否提出了正确的问题,所以不确定标题是否正确。 但我正在使用看起来像这样的代码:
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-> ?
}
'foo'是一个不变的参考。 您可以通过foo.fred,foo.method()等访问其成员,但不能更改任何数据成员或调用任何非const方法。
add
方法中的变量foo
是一个常量引用。 它的行为就像一个指针,它不会复制对象:你与它交互就好像它是对象本身一样。 与指针不同,引用不能为NULL
,也不能重新赋值。 您使用点与它进行交互.
运算符而不是->
运算符。
void add(const Foo & foo){
cout << foo.first_member << endl;
foo.const_member_function();
}
由于foo
是一个常量引用,你可以阅读foo
的成员,但你不能分配它们。 此外,对foo
引用的成员函数的任何调用都限于明确标记为const
。
只要foo
不为NULL
,使用解除引用的foo
调用add
可以了。 通过解除引用NULL
指针来进行引用是未定义的行为。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.