1

让我们考虑以下课程:

struct T {
    T() {}
    T(T&) {cout << "1";}
    T(const T&) {cout << "2";}
};

为什么T::T(T&)匹配比T::T(const T&)以下初始化更好:

T a;
T b = a;

两个重载的复制 ctor 只需要简单的转换,那么为什么没有歧义呢?

4

1 回答 1

-1

也许这张表对你有一点帮助:

从类型转换 转换为类型
类型名称 类型名称 &
类型名称 & 类型名称
类型名称 [ ] 类型名称 *
类型名称(参数列表) ( * 类型名称 ) ( 参数列表 )
类型名称 const 类型名
类型名称 易失性类型名称
类型名称 * 常量类型名称 *
类型名称 * 易失性类型名称 *

参考:成员函数上的 Ref-qualifiers

于 2021-01-17T18:00:45.640 回答