分享

operator==.cpp

 望穿墙 2013-12-08
/*
 * operator==.cpp
 *
 *  Created on: 2013-10-21
 *      Author: Administrator
 */
#include<iostream>
using namespace std;



/*
 * 重载双目运算符为类的友元函数的规则: 对于双目运算符B,如果它的一个操作数为A类的对象,就可以
 * 将B (本例中为==) 重载为A类的友元函数,该函数有两个形式参数,其中的一个形参是A类的数据类
 * 型。重载后oprd1 B oprd2表达式就相当于函数调用operator B(oprd1,oprd2)。
 */
class B
{
public:
    B(int n)
    {
            b = n;
    }
    int GetB()
    {
        return b;
    }
    int b;
};

class A
{
public:
    A(int n)
    {
            a = n;
    }
    //一定要声明为友元函数 让它可以访问到A类的数据成员
    friend int operator == (A a1,B b1);
    int GetA()
    {
        return a;
    }

    int a;
};

int operator == (A a1,B b1)
    {
        return (a1.a == b1.b);
    }
/*
 * 当不使用友元函数时 可以使用下面的方法 实现运算符重载
int operator == (A a1,B b1)
    {
        return (a1.GetA() == b1.GetB());
    }
*/
int main(void)
{
    A a1(5);
    B b2(5);
    cout << (a1 == b2);
    return 0;
}

/*
 * 输出0 若改为A a1(5); 则输出1
 *
 * 这个程序实现了重载==运算符 采用的是把==重载为A类的友元函数
 * 重装运算符不一定要在类里重载
 */



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多