C++运算符重载

一、一般运算符重载
运算符重载有两种方式:成员函数和友元函数。成员函数的形式,就是在类里面定义了一个与操作符相关的函数。友元函数因为没有this指针,所以形参会多一个。
class A
{
public:
A(int d):data(d){}
A operator+(A&);    //成员函数
friend AA operator+(A&,A&);   //友元函数
private:
int data;
};
//成员函数的形式
A A::operator+(A &a)
{
return A(data+a.data);
}

//友元函数的形式
A operator+(A &a1,A &a2)
{
return A(a1.data+a2.data);
}
}
二、自增减运算符重载
A& operator ++ ();//前置++
A operator ++ (int);//后置++
A& operator --();//前置--
A operator -- (int);//后置--

三、关系运算符重载
关系运算符有==,!=,<,>,<=,>=
如:
bool operator == (const A& );

四、逻辑运算符重载
逻辑运算符有||,&&,!
如:

bool operator || (const A& );

总结:
1、除了类属关系运算符”.“、成员指针运算符”.*“、作用域运算符”::“、长度运算符“sizeof”和三目运算符”?:“以外,C++中的所有运算符都可以重载。

2、运算符重载实质上是函数重载。

3、一般说来,单目运算符最好被重载为成员;对双目运算符最好被重载为友元函数,但是,有的双目运算符还是重载为成员函数为好,例如,赋值运算符。因为,它如果被重载为友元函数,将会出现与赋值语义不一致的地方。

4、重载之后的运算符不能改变运算符的优先级和结合性,也不能改变运算符操作数的个数及语法结构。

5、重载运算符的函数不能有默认的参数。

6、用于类对象的运算符一般必须重载,但是运算符“=”和“&”不必用户重载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值