转换构造函数
转换构造函数
转换构造函数是一种特殊类型的构造函数,它可以使用一个参数来创建新对象。这允许我们使用一个表达式将一个类型隐式转换为另一个类型。它通常用于定义从一个类型到类类型的转换。
当我们有一个需要类类型的表达式时,而我们提供的是另一种类型(例如,基本类型或另一个类类型),编译器将查找一个只接受该类型作为参数的构造函数,并使用它来执行转换。
以下是一个C++示例,说明了转换构造函数的用法:
1 |
|
此示例中的Fraction类具有一个接受整数作为参数的构造函数。当我们尝试将整数赋值给Fraction类型的对象时,此构造函数被调用,并执行所需的转换。
注意,转换构造函数可以非常方便,但也可能导致一些意外行为。如果不希望构造函数被用作隐式转换,可以通过在构造函数声明前添加explicit关键字来防止这种情况:1
2explicit Fraction(int num) : numerator(num), denominator(1) {}
添加explicit后,构造函数不会用于隐式转换,只能显式调用
转换构造函数
https://qiangsun89.github.io/2023/08/24/转换构造函数/