一 概述
类型强制转换运算符是单目运算符,也可以被重载,但只能重载为成员函数,不能重载为全局函数。经过适当重载后,(类型名)对象
这个对对象进行强制类型转换的表达式就等价于对象.operator 类型名()
,即变成对运算符函数的调用
二 示例及结果输出
2.1 代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| #include<iostream> using namespace std; class A { private: int i; public: A(int x) { i = x; cout << "构造函数执行!" << i << endl; } ~A() {cout << "析构函数执行!" << i << endl;} void get() {cout << i << endl;} operator int(){return i;}
}; int main() { A a(33); a.get(); int x=999; //x=a.operator int(); //x=(int)a; //x=int(a); //x=(a); x=a; a.get(); cout<<x<<endl; return 0; }
|
2.2 输出结果
1 2 3 4 5
| 构造函数执行!33 33 33 33 析构函数执行!33
|
2.3 代码说明
- 转换类型运算符使用operator进行重载
- 变换过程:x=a.operator int()、x=(int)a、x=int(a)、x=(a)、x=a