首 页 | 新 闻 | Symbian | Android| Windows Mobile | J2ME | 下载中心 | 游戏策划招聘与求职 | 购书指南 | 视频教程
您现在的位置: 开发视界 >> Symbian >> 语言基础 >> 正文
C++运算符重载转换运算符(1)
作者:管宁    文章来源:PConline    更新时间:2006-5-25 12:37:46
大家知道对于内置类型的数据我们可以通过强制转换符的使用来转换数据,例如(int)2.1f;自定义类也是类型,那么自定义类的对象在很多情况下也需要支持此操作,C++提供了转换运算符重载函数,它使得自定义类对象的强转换成为可能。

  转换运算符的生命方式比较特别,方法如下:

   operator 类名();

  转换运算符的重载函数是没有返回类型的,它和类的构造函数,析构函数一样是不遵循函数有返回类型的规定的,他们都没有返回值

  下面我看一个例子,看看它是如何工作的:

//例1 
 
//程序作者:管宁         
//站点:www.cndev-lab.com         
//所有稿件均有版权,如要转载,请务必著名出处和作者      
   
#include <iostream>   
using namespace std;   
   
class Test     
{     
    public
        Test(int a = 0) 
        { 
            cout<<this<<":"<<"载入构造函数!"<<a<<endl; 
            Test::a = a; 
        } 
        Test(Test &temp) 
        { 
            cout<<"载入拷贝构造函数!"<<endl; 
            Test::a = temp.a; 
        } 
        ~Test() 
        { 
            cout<<this<<":"<<"载入析构函数!"<<this->a<<endl; 
            cin.get(); 
        } 
        operator int()//转换运算符 
        { 
            cout<<this<<":"<<"载入转换运算符函数!"<<this->a<<endl; 
            return Test::a; 
        } 
    public
        int a; 
}; 
int main() 

    Test b(99); 
    cout<<"b的内存地址"<<&b<<endl; 
    cout<<(int)b<<endl;//强转换 
    system("pause"); 
}

  在例子中我们利用转换运算符将Test类的对象强转换成了int类型并输出,注意观察转换运算符函数的运行状态,发现并没有产生临时对象,证明了它与普通函数并不相同,虽然它带有return语句。

相关文章:
列举系统当前所有进程
遍历文件夹
如何在进程间共享文件句柄
MMI of UIQ (三)
Symbian系统中DLL的冻结
如何改变CEikLabel的颜色
创建Log文件调试Symbian程序
CCoeControl类中Draw()函数的调试
 

站点地图 | 加入收藏 | 联系站长 | 广告服务 |
QQ:280529124  Tel:0592-8271361 辽ICP备05021703号