/* * 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类的友元函数 * 重装运算符不一定要在类里重载 */ |
|
来自: 望穿墙 > 《operator》