[英]Difference between const reference and reference
void setage(const int&a);
void setage(int&a);
这两个功能有什么区别? 何时调用此 function?
给定重载集:
void setage(int&a) { std::cout << "&"; }
void setage(const int&a) { std::cout << "&c"; }
第一个 function仅使用非常量变量调用:
int a = 42;
setage(a); // prints &
第二个 function 被调用,如果你传递一个常量变量,或者你传递一个文字值:
int const b = 42;
setage(b); // prints c&
setage(42); // prints c&
请注意,如果此重载集写入 class 中,则适用相同的规则,并且调用哪个 function 仍然取决于传入的参数是文字、非 const 变量还是 const 变量。
const
只是意味着 function 不会改变值。 通过引用传递时,通常首选通过常量引用传递,除非 function 应该更改参数。
至于调用哪个 function 取决于变量类型。 请参见下面的示例。
int a( const int &b ) { return b; }
int a( int &b ) { return ++b; }
int main() {
int x = 2;
a( x ); // calls a( int & b )
a( 5 ); // calls a( const int &b )
const int y = 7;
a( y ); // calls a( const int &b )
}
请注意,文字值(例如上例中的5
)不能绑定到非const
引用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.