CPP学习之——转换类型运算符(11.10)

一 概述

类型强制转换运算符是单目运算符,也可以被重载,但只能重载为成员函数,不能重载为全局函数。经过适当重载后,(类型名)对象这个对对象进行强制类型转换的表达式就等价于对象.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