标准转换序列为何含用户定义转换?C++规则解析与示例请求
关于C++重载决议中标准转换序列的困惑
我在理解重载决议里的标准转换序列等级划分时,遇到了矛盾点:
每种标准转换序列被划分为三个等级之一:
- 精确匹配:无需转换、左值到右值转换、限定转换、函数指针转换(C++17起)、类类型到同类的用户定义转换
- 提升:整型提升、浮点型提升
- 转换:整型转换、浮点型转换、浮点-整型转换、指针转换、成员指针转换、布尔转换、派生类到基类的用户定义转换
但根据隐式转换的定义,标准转换序列本身不包含用户定义转换,隐式转换要么是纯标准转换构成,要么是单个用户定义转换夹在两段(可能为空的)标准转换序列之间。
我的疑问如下:
- 为什么标准转换序列的等级划分里会提及用户定义转换?
- 「类类型到同类的用户定义转换」和「派生类到基类的用户定义转换」有哪些具体示例?
- 用户自定义拷贝构造函数是否属于这类被视为标准转换的用户定义转换?能否和真正的用户定义转换出现在同一隐式转换序列中?
希望能得到这类特殊用户定义转换的简单示例,或者指出我对这段文本的误解之处。
内容的提问来源于stack exchange,提问作者user3188445
相关产品推荐
相关产品推荐

