Nag*_*ppa 0 c++ pass-by-reference-value
void setage(const int&a);
void setage(int&a);
Run Code Online (Sandbox Code Playgroud)
这两个函数有什么区别?什么时候调用这个函数?
鉴于过载集:
void setage(int&a) { std::cout << "&"; }
void setage(const int&a) { std::cout << "&c"; }
Run Code Online (Sandbox Code Playgroud)
第一个函数仅使用非常量的变量调用:
int a = 42;
setage(a); // prints &
Run Code Online (Sandbox Code Playgroud)
如果向它传递一个 const 变量,或者向它传递一个文字值,则会调用第二个函数:
int const b = 42;
setage(b); // prints c&
setage(42); // prints c&
Run Code Online (Sandbox Code Playgroud)
注意,如果这个重载集写在一个类中,同样的规则适用,调用哪个函数仍然取决于传入的参数是文字、非常量变量还是常量变量。