设为首页 加入收藏

TOP

C++运算符重载函数作为类成员函数和友元函数
2014-11-24 02:38:47 来源: 作者: 【 】 浏览:3
Tags:运算 重载 函数 作为 成员

运算符重载函数既可以做为类成员函数也可以重载为友元函数,但使用定义方法和使用上是由较大差别的。


运算符重载函数作为类成员函数


首先看一个运算符重载函数作为类成员函数的示例代码:


定义Complex为复数类,重载运算符"+"实现复数的相加。


程序1.1


#include
using namespace std;
class Complex
{
public:
Complex()
{
real=0;
imag=0;
}
Complex(double r,double i)
{
real=r;
imag=i;
}
Complex operator +(Complex &c2);//声明重载运算符"+"的函数
void display();
private:
double real;
double imag;
};
Complex Complex::operator+(Complex &c2)//定义重载运算符"+"的函数
{
Complex c3;
c3.real=real+c2.real;
c3.imag=imag+c2.imag;
return c3;
}
void Complex::display()
{
cout<<"("<}
int main()
{
Complex c1(3,4),c2(5,-10),c3;
c3=c1+c2;
cout<<"c1=";
c1.display();
cout<<"c2=";
c2.display();
cout<<"c1+c2=";
c3.display();
return 0;
}


程序运行界面:



我们单独拿出运算符成员函数体来分析:


Complex Complex::operator+(Complex &c2)//定义重载运算符"+"的函数
{
Complex c3;
c3.real=real+c2.real;
c3.imag=imag+c2.imag;
return c3;
}


这是重载"+"的成员函数,实现了两个类中的成员变量的值相加,并赋给第三个变量的功能。



但是,函数只有一个形参,那么另外一个进行加操作的类是谁呢?


实际上语句:c3=c1+c2;被解释为c3=c1.operator+(c2);


也就是说,c1类调用了它的成员函数operator+();c2作为该成员函数的实参。


当两个Complex类执行"+"运算时,“+”左面的类调用成员函数operator+(),并将c2作为函数的实参进行操作


相关阅读:



】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++中函数的默认参数 下一篇C++经典问题:狐狸找兔子

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: