日期:2011-03-22 13:55:00 来源:本站整理
<b>C++中操纵构造函数与无名对象简化运算符重载函数</b>[VC/C++编程]
本文“<b>C++中操纵构造函数与无名对象简化运算符重载函数</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在完好描写思惟之前,我们先看一下以下的例子,这个例子中的加运算符重载是以非成员函数的方法呈现的:
//程序作者:管宁
//站点:www.cndev-lab.com
//全部稿件均有版权,如要转载,请务必闻名出处和作者
#include<iostream>
usingnamespacestd;
classTest
{
public:
Test(inta)
{
Test::a=a;
}
friendTestoperator+(Test&,int);
public:
inta;
};
Testoperator+(Test&temp1,inttemp2)
{
Testresult(temp1.a+temp2);
returnresult;
}
intmain()
{
Testa(100);
a=a+10;//精确
a=10+a;//错误
cout<<a.a<<endl;
system("pause");
}
上面的代码是一个自定义类对象与内置整型对象相加的例子,但错误行让我们忽然感受很诧异,但细心看看的确也在道理中,参数次序改变后c++无法辨认可供利用的运算符重载函数了.
我们为了适应次序问题不得不多加一个几近一样的运算符重载函数.
代码以下:
//程序作者:管宁
//站点:www.cndev-lab.com
//全部稿件均有版权,如要转载,请务必闻名出处和作者
#include<iostream>
usingnamespacestd;
classTest
{
public:
Test(inta)
{
Test::a=a;
}
friendTestoperator+(Test&,int);
friendinlineTestoperator+(Test&,int);
public:
inta;
};
Testoperator+(Test&temp1,inttemp2)
{
Testresult(temp1.a+temp2);
returnresult;
}
inlineTestoperator+(inttemp1,Test&temp2)//操纵内联函数的定义提高效率
{
returntemp2+temp1;
}
intmain()
{
Testa(100);
a=a+10;//精确
a=10+a;//精确
cout<<a.a<<endl;
system("pause");
}
代码中我们利用内联函数的目的是为了缩减开销,但事实上我们仍旧认为是对比麻烦的,例子中的情形都还是非成员函数的情形,假如运算符重载函数是作为类成员函数,那么问题就来了,重载函数的第一个参数始终被躲藏,我们无发让int形参布列在躲藏参数的前面,从而招致a = 10 + a;无法获得精确的运算符重载函数.
以上是“<b>C++中操纵构造函数与无名对象简化运算符重载函数</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论