类转换操作符定义
//函数格式
operator type(){
return type_value; // 类型要和type 一致。
}
//函数在写法上无参数,无返回值,但函数体中应该有return,且return的变量类型要和
//重载的类型一致。如果同时存在重载操作符和重载类型,那么优先匹配重载的操作符。
转换int类型
operator int(){int a=10;return a;
}
显示调用类型转换运算符
#include <iostream>
using namespace std;class CTest {
public:int m_a;// 构造函数,初始化 m_a 为 10CTest() : m_a(10) {}// 类型转换运算符,将 CTest 对象转换为整型operator int() {return m_a; // 返回 m_a}
};int main() {CTest tst; // 创建 CTest 实例// 显式调用类型转换运算符int a = tst.operator int() + 10; // 调用类型转换运算符cout << "a: " << a << endl; // 输出 a: 20return 0;
}
示例:
#include <iostream>
using namespace std;class CTest {
public:int m_a; // 类的成员变量// 构造函数,初始化 m_a 为 10CTest() {m_a = 10;}// 类型转换运算符,将 CTest 对象转换为整型operator int() {return m_a;}// 注释掉的运算符重载/*int operator+(int a) {return this->m_a + a;}*/
};int main() {CTest tst; // 创建 CTest 类的实例// 由于没有重载 `operator+`,所以会调用类型转换int a = tst + 10; cout << a << endl; // 输出结果是 20// 明确调用类型转换运算符int b = tst.operator int() + 20; cout << b << endl; // 输出结果是 30// 30 + tst 只会调用类型转换运算符int c = 30 + tst; cout << c << endl; // 输出结果是 40return 0;
}