运算符重载与友员函数

来源:互联网 发布:java实现加减乘除 编辑:程序博客网 时间:2024/05/18 03:04

1.友员函数使用在,你需要一个函数具有访问类的私有成员,但是不想它成为这个类的成员函数,那么可以声明这个函数为类的友员函数 。

2.运算符重载为类的成员函数时,使用时,左边必须是这个类的对象,如果左边不是类的对象 ,那么是无法调用这个成员函数的,如果想左边不是一个对象就 调用 这个函数,那么

可以声明这个函数为类的友员函数


#include <iostream>
using namespace std;

class Complex
{
    private:
        int realValue;
        int virtualValue;
    public:
        Complex(int r, int v)
        {   
            realValue = r ;
            virtualValue = v ;
        }   
        //object+object
        Complex operator + (const Complex &c1);
        //object+i,but i+object is false
        Complex operator + (const int i);
        //i+object
        friend Complex operator + (const int i,Complex &c1);
        void display(){cout<<realValue<<","<<virtualValue<<endl;}
};

Complex Complex::operator + (const Complex &c1)
{
    return Complex(realValue+c1.realValue,virtualValue+c1.virtualValue);
}

Complex Complex::operator + (const int i)
{
    return Complex(realValue+i,virtualValue);
}

Complex operator + (const int i,Complex &c1)
{
    return Complex(i+c1.realValue,c1.virtualValue);
}


int main()
{
    Complex a(1,2);
    Complex b(2,3);
    Complex c = a+b;
    Complex d = a+10;
    Complex e = 10+a;
    c.display();
    d.display();
    e.display();
    return 0;
}





0 0