余睿的博客

浮生若梦,别多会少,不如莫遇

0%

c++重载强制类型转换运算符

强制类型转换运算符是单目运算符,也可以被重载,但只能重载为成员函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
class Complex
{
double real, imag;
public:
Complex(double r = 0, double i = 0) :real(r), imag(i) {};
operator double() { return real; } //重载强制类型转换运算符 double
};
int main()
{
Complex c(1.2, 3.4);
cout << (double)c << endl; //输出 1.2
double n = 2 + c; //等价于 double n = 2 + c. operator double()
cout << n; //输出 3.2
}

在上面的程序中,我们重载了double类型强制转换运算符,可以将一个复数类强制转换为一个double类型的变量,具体做法是返回这个复数类的实部。

需要注意的是

  • 因为强制类型转换运算符是单目运算符,重载为成员函数后其参数个数为目数减一,所以该函数没有参数。

  • 强制类型转换运算符本身就指明了返回值类型,所以不需要返回值

欢迎关注我的其它发布渠道