void setage(const int&a);
void setage(int&a);
这两个功能有什么区别?什么时候调用这个函数?
给定重载集:
void setage(int&a) { std::cout << "&"; }
void setage(const int&a) { std::cout << "&c"; }
第一个函数仅使用非常量的变量调用:
int a = 42;
setage(a); // prints &
如果您向其传递一个 const 变量,或者如果您向其传递一个文字值,则调用第二个函数:
int const b = 42;
setage(b); // prints c&
setage(42); // prints c&
注意,如果这个重载集写在一个类中,同样的规则适用,调用哪个函数仍然取决于传入的参数是文字、非常量变量还是常量变量。
const
just 表示函数不会改变值。通过引用传递时,通常首选通过常量引用传递,除非函数应该更改参数。
至于调用哪个函数,取决于变量类型。请参见下面的示例。
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
引用。