> 文章列表 > C++类型转换运算符

C++类型转换运算符

C++类型转换运算符

类型转换运算符是一种特殊的函数,它可以将一个类类型的对象转换为另一种类型的值,或将一个对象引用或指针转换为另一种类型的对象引用或指针。这样一来,我们就可以在某些场合下方便地将一个对象转换为另一种形式。
在 C++ 中,类型转换运算符是以 operator 关键字开头,其后跟所要转换的目标类型,其语法格式如下:

operator target_type() {// 类型转换运算符函数体
}

在类中定义类型转换运算符时需要注意以下几点:

类型转换运算符必须是成员函数,不能是静态函数。
类型转换运算符没有参数,但可以有任意的返回类型。
返回类型必须是除了 void 之外的任意类型。
如果转换运算符是类的非静态成员函数,则它不能有返回类型为引用类型。
转换运算符必须显式地将对象转换为目标类型,不能转换为其它类型。

下面是一个示例代码,演示了如何使用类型转换运算符将一个类类型的对象转换为另一种类型:

#include <iostream>using namespace std;class Number {
public:Number(int n = 0) : m_n(n) {}operator double() const { return (double)m_n; }operator string() const { return to_string(m_n); }
private:int m_n;
};int main() {Number num(10);double x = num;   // 将 Number 对象转换为 double 类型string str = num; // 将 Number 对象转换为 string 类型cout << "num as double: " << x << endl;cout << "num as string: " << str << endl;return 0;
}

其中包含两个类型转换运算符,一个将 Number 对象转换为 double 类型,另一个将 Number 对象转换为 string 类型。在 main() 函数中,我们创建了一个 Number 对象 num,并使用类型转换运算符将其分别转换为 double 类型和 string 类型,并将结果输出到控制台。

需要注意的是,类型转换运算符可以重载为 const 成员函数或非 const 成员函数。如果它是 const 成员函数,那么它只能被用于转换 const 对象或对象的 const 属性;如果它是非 const 成员函数,那么它可以被用于转换非 const 对象或对象的非 const 属性。