以下内容引自C++ Primer。
类型转换运算符是类的一种特殊成员函数,它负责将一个类类型的值转换成其他类型。类型转换函数的一般形式如下:
1 | operator type() const; |
其中type表示某种类型。类型转换运算符可以面向任意类型(除了void之外)进行定义,只要该类型能够作为函数的返回类型。因为,我们不允许转换成数组或者函数类型,但允许转换成指针(包括数组指针及函数指针)或者引用类型。
类型转换运算符既没有显示的返回类型,也没有形参,而且必须定义成类的成员函数。类型转换运算符通常不应该改变待转换对象的内容,因此,类型转换运算符一般被定义成const成员。
(以下内容为博主自己做的例子)
那么来看一个例子:
1 |
|
这里我们将Tt类型的变量t1转换成了int类型的值并赋值给int类型的变量a,然后输出a,这是输出结果:
1 | ~/codeSet/CPPCode » ./a.out fire@butterfly |
可以看到,类型转换按照我们预先定义的方式规则工作了。
为了防止隐式转换,我们可以在声明的时候加上explicit:
1 | explicit operator int()const {return b;}; |
然而该显示转换在用作条件的时候依然会被隐式转换。
不得不说,C++真是花里胡哨啊。
本篇完。