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信息?
服务器网页HTTP状态查询:X-Powered-By: ASP.NET,PHP/5.2.5