重载语法:返回值类型 operator 操作符(参数列表)
用顶层函数进行操作符重载。
必须至少一个参数是类,否则编译器不能分清是不是重载的操作符
对类成员函数进行操作符重载
//对于二元操作符函数为某类的成员函数的时候,只能显式声明一个形参数作为右操作数,左操作数是这个类的对象
//对于一元操作符函数为某类的成员函数的时候就不需要参数了。
//本来是几元操作符,重载以后还得是几元的
//定义
int operator+(const C& c){
}
//使用
a=b+c//等同于a=b.operator+(c);
友元friend
一个类的friend可以访问这个类的private和protected成员。但它不是该类的成员函数,所以放在类中哪里都行
class C{
friend int f(){}//顶层函数
};
class C{
friend D::f(){}//另一个类的成员函数
};
class C{
friend class D;//另一个类声明为友元
};
//同一个函数可以被多个类声明为友元,这样就可以在一个函数里用多个类的成员
friend关系单向,不可传递。
friend不是类的成员却可以访问类的private和protected,破坏了面向对象的性质。建议只在操作符重载中用