C++操作符重载

重载操作符是具有特殊名称的函数:保留字operator后接所需定义的操作符符号。

重载操作符必须具有至少一个类类型或枚举类型的操作数,这条规则强制重载操作符不能重新定义用于内置类型对象操作符的含义,所以如int operator+(int ,int )是不合法的。

大多数重载操作符可以定义为普通非成员函数或类的成员函数,作为成员函数的操作符有一个隐含的this形参,限定为第一个操作数。

一般将算术和关系操作符定义为非成员函数,而将赋值操作符定义为成员。

也可以像调用普通函数一样调用重载操作符函数,指定函数并传递适当类型适当数目的形参。如:

cout << operator+(item1,item2) <<endl;

item1.operator+=(item2);

重载操作符的几条设计原则:

1.不要重载具有内置含义的操作符

重载逗号、取地址、逻辑与、逻辑或等操作符通常不是好做法,这些操作符具有有用的内置含义,如果我们定义了自己的版本,就不能再使用这些内置含义。

2.赋值( = )、下标( [ ] )、调用( () )和成员访问箭头( -> )等操作符必须定义为成员,将这些操作符定义为非成员函数将在编译时标记为错误。

3.像赋值一样,复合赋值操作符通常应定义为类的成员(但不是必须的)。

4.改变对象状态或与给定类型紧密联系的其他一些操作符,如自增、自减和解引用,通常应定义为类成员。

5.对成的操作符,如算术操作符、相等操作符、关系操作符和位操作符,最好定义为普通非成员函数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值