C++ 中重载函数与运算符的深入解析
1. 类型转换
在深入探讨重载之前,需要先了解类型转换的相关知识。编译器会对某些类型进行提升,例如将 short 提升为 int ,也能将一种类型转换为另一种类型,如将 int 转换为 long 。
类型转换的方式主要有以下两种:
- 单参数构造函数 :可以将一个类型转换为另一个类型。例如, rational{1} 能将整数 1 转换为 rational 类型。当声明单参数构造函数时,可以指定编译器是隐式执行类型转换,还是需要显式的类型转换。
rational reciprocal(rational const& r)
{
return rational{r.denominator(), r.numerator()};
}
rational half{ reciprocal(2) };
若要禁止隐式构造,可在构造函数前使用 explicit 说明符。例如 std::vector 的单参数构造函数就是显式的,以避免类似以下的语句:
std::vector<int> v;
v = 42;
超级会员免费看
订阅专栏 解锁全文
892

被折叠的 条评论
为什么被折叠?



