void setage(const int&a);
void setage(int&a);这两种功能有什么区别?什么时候调用这个函数?
发布于 2020-05-20 14:32:36
考虑到重载集:
void setage(int&a) { std::cout << "&"; }
void setage(const int&a) { std::cout << "&c"; }第一个函数只使用非const变量调用:
int a = 42;
setage(a); // prints &如果将一个变量传递给const,或者传递给它一个文字值,则调用第二个函数:
int const b = 42;
setage(b); // prints c&
setage(42); // prints c&请注意,如果此重载集是在类中编写的,则应用相同的规则,调用哪个函数仍然取决于传入的参数是文字变量、非const变量还是const变量。
发布于 2020-05-20 14:32:11
const只是意味着该函数不会更改该值。当通过引用传递时,通常倾向于通过常量引用传递,除非函数应该更改参数。
至于调用哪个函数,则取决于变量类型。见下面的例子。
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引用。
https://stackoverflow.com/questions/61915474
复制相似问题