让我们考虑以下课程:
struct T {
T() {}
T(T&) {cout << "1";}
T(const T&) {cout << "2";}
};
为什么T::T(T&)
在以下初始化中与T::T(const T&)
匹配得更好:
T a;
T b = a;
两个重载的副本都需要进行简单的转换,为什么没有歧义呢?
答案 0 :(得分:-1)
也许这张表对你有一点帮助:
从类型转换 | 转换为类型 |
---|---|
类型名称 | 类型名称& |
类型名称& | 类型名称 |
类型名称 [ ] | 类型名称 * |
类型名称(参数列表) | ( * type-name ) ( 参数列表 ) |
类型名称 | 常量类型名称 |
类型名称 | 易失类型名称 |
类型名称 * | const 类型名称 * |
类型名称 * | volatile 类型名称 * |