首 页 | 新 闻 | Symbian | Android| Windows Mobile | J2ME | 下载中心 | 游戏策划招聘与求职 | 购书指南 | 视频教程
您现在的位置: 开发视界 >> Symbian >> 语言基础 >> 正文
C++中利用构造函数与无名对象简化运算符重载函数 (3)
作者:管宁    文章来源:PConline    更新时间:2006-5-24 11:45:25

//例二 
 
//程序作者:管宁       
//站点:www.cndev-lab.com       
//所有稿件均有版权,如要转载,请务必著名出处和作者 
 
#include <iostream
using namespace std; 
 
class Test   
{   
    public:   
        Test(int a)//事实上构造函数起的转换作用本质就是产生无名对象 
        { 
                Test::a = a; 
        } 
        Test operator + (Test &temp)//第一个参数即使隐藏也没有关系,因为是以Test类型的无名对象参与运算的 
        { 
                Test result(this->a + temp.a); 
                return result; 
        } 
    public
        int a; 
}; 
 
int main() 

    Test a(100); 
    a = a + Test(10); 
    a = Test(10) + a; 
    cout<<a.a<<endl; 
    a = 50 + 1;//先进行50+1的内置整型的加运算,然后进行a=Test(51)的隐式转换 
    cout<<a.a<<endl; 
    system("pause"); 
}

  认真观察了上面的两个例子后我们可以发现,类的构造函数起了显式或者隐式转换的作用,转换过程实质是产生一个类的无名对象,类的运算符重载函数的参数就是这个无名对象的引用,所以参数的顺序也不再是问题,代码的运行效率也得到提高,无需再定义只是参数顺序不同,内容重复的运算符重载函数了。

相关文章:
列举系统当前所有进程
遍历文件夹
在没有ui的程序中捕获所有的key事件
如何在进程间共享文件句柄
MMI of UIQ (三)
Symbian类里的extension和reserved
Symbian系统中DLL的冻结
Symbian应用程序中如何备份和载入
 

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