C语言中的重载强制类型转换运算符

来源:爱站网时间:2022-07-15编辑:网友分享
想要了解C语言中的重载强制类型转换运算符相关内容的朋友,可以看看爱站技术频道小编分享给大家的资料,感兴趣的朋友一定不要错过,或多或少能在工作中帮助到你。

在 C++ 中,类型的名字(包括类的名字)本身也是一种运算符,即类型强制转换运算符。

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

下面的程序对 double 类型强制转换运算符进行了重载。

#include 
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

程序的输出结果是: 1.2 3.2 第 8 行对 double 运算符进行了重载。重载强制类型转换运算符时,不需要指定返回值类型,因为返回值类型是确定的,就是运算符本身代表的类型,在这里就是 double。 重载后的效果是,第 13 行的(double)c等价于c.operator double()。 有了对 double 运算符的重载,在本该出现 double 类型的变量或常量的地方,如果出现了一个 Complex 类型的对象,那么该对象的 operator double 成员函数就会被调用,然后取其返回值使用。 例如第 14 行,编译器认为本行中c这个位置如果出现的是 double 类型的数据,就能够解释得通,而 Complex 类正好重载了 double 运算符,因而本行就等价于:

double n = 2 + c.operator double();

关于语言中的重载强制类型转换运算符的内容不知道朋友们都看明白了没有,爱站技术频道网站提供了各种类型的技术文章给朋友们,想深入了解的话记得来收藏关注下。

上一篇:C语言运算符重载的详细内容

下一篇:C语言中的虚继承和虚基类的内容

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载