C++类型转换函数

Posted Linux编程学堂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++类型转换函数相关的知识,希望对你有一定的参考价值。

类型转换函数

用转换构造函数可以将一个指定类型的数据转换为类的对象。但是,能不能反过来将一个类对象转换为一个其他类型的数据。例如,将一个my_int类对象转换成char类型的字符串数据,要怎么样设计?

C++提供类型转函数(type conversion function)来解决这个问题。类型转换函数的作用是将一个类的对象转换成另一个类型的数据。如果已经定义了一个my_int类,可以在my_int类中这样定义类型转换函数:

operator char*()

char* str = new char[32];

_snprintf(str, 32, "%d", val);

return str;

函数返回char*类型变量str的值,它的作用是将一个my_int类对象转换为一个char*字符串类型数据,其值是my_int类中的val成员变量的值。

请注意:函数名是operatro char*(),这点是和运算符重载时的规律一致的,例如,在重载加运算符“+”的时候,有定义重载函数的函数名是operator +()。那么,类型转换函数的一般形式为:

operator 函数名()

实现转换的语句;

在函数名前面不能指定函数返回类型,函数没有参数。其返回值的类型就是由“函数名”指定的类型名类确定,就是说,该函数有一个默认的返回类型,它就是“函数名”。所以,我们不要显式地指定函数的返回类型。

类型转换函数只能作为成员函数,因为转换的主体是本类的对象。不能作为友元函数或普通函数。

从函数形式可以看出,它与运算符重载函数相似,都是用关键字operator 开头,只是被重载的是类型名。在前面列出的类型转换函数中,char*类型经过重载后,除了原有的含义外,还获得新的含义(将一个my_int类对象转换为char*类型字符串数据,并指定了转换方法)。

如下是一个程序测试例子:

程序运行结果如下:

可以看到,首先,执行:

my_int a("123");

是把一个char*类型的字符串,转换成my_int类型的对象a。然后,执行:

char* pstr = a;

把my_int类型的对象a,转换成char*类型的字符串。在这个操作中,调用的是类型转换函数:

operator char*()

此时,在该函数中,把my_int类对象的val成员变量,格式化成字符串,然后,返回该字符串。

以上是关于C++类型转换函数的主要内容,如果未能解决你的问题,请参考以下文章

如何移除网站Response Headers中的X-Powered-By信息?

X-Powered-By中的Express在哪个地方能改呢

隐藏响应的server,X-Powered-By

服务器网页HTTP状态查询:X-Powered-By: ASP.NET,PHP/5.2.5

DouPHP去除Powered by DouPHP版权的方法

Sysdig and Falco now powered by eBPF