【发布时间】:2018-07-02 08:45:46
【问题描述】:
void print( int & a ){ cout << a << endl; }
void print( const int & a ){ cout << 2*a << endl; }
void print( float a ){ cout << 3*a << endl; }
为什么2 是print(1) 的输出?
【问题讨论】:
-
1 是不是常数?
-
第一个重载不可行 - 右值不能绑定到非 const 左值引用。
-
@Asad Masroor 再添加一个重载函数 void print( int &&a ) { std::cout
-
@UKMonkey - VC6 实际上实现了循环变量的proposed 标准。然后在编译器发布几个月后,在标准发布之前修改规则。能否解释为什么 MS 自那以后一直不愿实施新提案?
标签: c++ function methods constants overload-resolution