打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C++类型转换运算符重载

 

一般来说,类对象的类型转换可由构造函数和转换函数说明。这种转换常称为用户定义的类型转换或类类型转换。C++支持四种类型转换,标准类型-》标准类型,标准类型-->类类型,类类型-->标准类型,类类型-->类类型。标注类型是除了class,struct,union之外的所有其他类型。
1.标准类型转换为类类型
可通过自定义重载赋值号“=”和构造函数实现
#include <iostream>
#include <stdlib.h>
#include <string.h>

using namespace std;

class INTEGER
{
    int num;
public:
    INTEGER(int i);
    INTEGER(const char *str);
    void mem_fun(INTEGER anint);
};

INTEGER::INTEGER(int i)
{
    num = i;
}

INTEGER::INTEGER(const char *str)
{
    num = strlen(str);
}

void INTEGER::mem_fun(INTEGER anint)
{
    num = anint.num;
}

int main(int argc,char *argv[])
{
    INTEGER obj1 = INTEGER(1);
    INTEGER obj2 = "Beijing";
    int anint = 10;
    INTEGER obj3 = INTEGER(anint);
    obj1 = 20;//隐式转换,将1转换为INTEGER型,obj1.operator=(INTEGER(20));编译器尝试用构造函数去实现转换。
    obj2.mem_fun(3);//同上,将3->INTEGER
    cout << "Application Run Successfully!" << endl;
    return 0;
}
2.类类型转换
带一个参数的构造函数可以进行类型转换,但这样的转换功能收到限制。因此需要引入一种特殊的成员函数:类型转换函数,他在类对象之间提供一种类似显示类型转的机制。格式:
Class_Name::operator type()
{
        ......
        return (type类型实例);
}
类型转换函数不能被重载,没有参数,没有返回值,但必须有一条返回语句返回一个type实例。
如:类类型转换为整形
#include <iostream>
#include <stdlib.h>
#include <string.h>

using namespace std;

class INTEGER
{
    int num;
public:
    INTEGER(int i=0)
    {
        num = i;
    }
    operator int()
    {
        return num;
    }
};

int main(int argc,char *argv[])
{
    INTEGER obj(12);
    int i = int(obj);
    cout << i << endl;
    i = (int)obj;
    cout << i << endl;
    i = obj;
    cout << i << endl;
    cout << "Application Run Successfully!" << endl;
    return 0;
}
如:类类型转换为类类型
定义一个类integer,它可以处理32位整数,同时定义另一个类real,它可以处理32位实数。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
如何在iOS中使用Block
Java中的自动装箱与拆箱
JAVA中常用数据类型转换函数
20分钟熟悉猛虎脾气 - JDK1.5新特性介绍
OC中Block语法、Block使用以及通过Block实现数组排序
空类型 通俗讲到底是什么?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服