繁体   English   中英

常量引用和引用之间的区别

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM