您的位置:首页 > 编程语言 > C语言/C++

c++ 转换与类类型简单实例

2014-11-01 10:42 176 查看
在需要做数据类型转换时,一般显式的写法是:

[cpp] view
plaincopy

<span style="font-size:18px;">type1 i;  

type2 d;  

i = (type1)d; //显式的写类型转,把d从type2类型转为type1类型</span>  

这种写法不能做到无缝转换,也就是直接写 i = d,而不需要显式的写(type1)来向编译器表明类型转换,要做到这点就需要介绍一下“类型转换操作符”,拿最简单的基本类型封包解包来举例:

[cpp] view
plaincopy

class Integer  

{  

public:  

    Integer(int v);  

    Integer& opetaror =(const int &v); //重载赋值操作符,可以做到 Integer i = 10;//把i当基本数据类型使用  

    operator int(); //重载类型转换操作符,可以做到int i; Integer it;  i = it; //it直接转为int类型,然后赋值给i  

  

private:  

    int data;  

};  

Integer::Integer(int v)  

{  

    data = v;  

}  

  

/*! 

 *@brief 重载赋值操作符,可以做到 Integer i = 10;//把i当基本数据类型使用 

 */  

Integer& Integer::opetaror =(const int &v)  

{  

    data = v;  

    return *this;  

}  

  

/*! 

 *@brief 重载类型转换操作符,可以做到int i; Integer it;  i = it; //it直接转为int类型,然后赋值给i 

 */  

Integer::operator int()  

{  

    return data;  

}  

  

#include <iostream>  

using namespace std;  

  

int main()  

{  

    Integer integer1(10); //调用构造函数进行初始化  

    Integer integer2;  

    int i1 = 10;  

    integer2 = i1; //调用=赋值操作符进行赋值  

  

    //下面测试类型转换操作符的应用  

    int i2;  

    i2 = integer1; //integer1是Integer类型,这里直接把Integer类型转换为int,然后赋值给i2  

                          //如果没有重载了int(),需要类型转换的话,这里必须写成 i2 = (int)integer1;  

    return 0;  

}  

这是int类型转换的写法,相应的,long,float,double等等的类型转换方法一样,统一的说,可以抽象的写成

operator type();只要type是一个类型,包括基本数据类型,自己写的类或者结构体都可以转换。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: