C++ 类的类型转换函数
在C++中,类型转换函数允许类对象在特定上下文中自动转换为其他类型。这些函数被称为转换函数(conversion functions)。
1. 语法
cpp
operator 目标类型() const {
// 转换逻辑
}
- operator: 这是关键字,用于声明一个运算符重载函数。
- 目标类型: 这是要转换为的目标类型。
- ():这表示这是一个函数。
- const: 这表示该函数不会修改对象的状态,是一个常量成员函数。
- 转换逻辑:这是将当前类对象转换为目标类型的实际逻辑。
2. 关键点
- 类型转换函数不能有返回类型,因为它们的返回类型已经由 operator 关键字和 () 中指定的目标类型确定。
- 类型转换函数必须是成员函数。
- 类型转换函数通常被声明为 public,以便在类外部进行访问。
3. 简单的例子
cpp
class Distance {
private:
float meters;
public:
Distance(float meters) : meters(meters) {}
// 类型转换函数:将 Distance 对象转换为 float 类型
operator float() const {
return meters;
}
};
int main() {
Distance d(100.5);
float m = d; // 自动调用 Distance 类的 operator float() const 函数,将 Distance 对象转换为 float 类型
std::cout << "Distance in meters: " << m << std::endl;
return 0;
}
在上面的示例中,Distance 类定义了一个类型转换函数 operator float() const,它将 Distance 对象转换为 float 类型。在 main 函数中,我们创建了一个 Distance 对象 d,然后直接将其赋值给一个 float 类型的变量 m,这样就会自动调用 operator float() const 函数,将 Distance 对象转换为 float 类型,并将结果存储在 m 中。