操作符重载

操作符合函数相似,操作符不用包含头文件,就可以访问到操作符,编译环境已经定义好了操作符,所以可以在自己的程序中对操作符重载(<iostream>中其实也有包含对<< >>的重载),有几种方式对操作符重载:

1.在文件中直接重载,属于文件可见。

2.在类中friend重载,这个操作符是由friend修饰,所以他并不是属于这个类的,即如果在外部定义,那么外部的也可以访问到(如果定义也在类内部部,那只有类内可见)。

2.定义为类的成员函数,这时候,类自身为操作符重载默认的第一个参数。(这样定义有需要注意的地方,由于操作符不同函数,函数的参数在括号内,有类对象的要用 "." 表示归属。操作符参数在符合周围,并且第一个参数还有表示类对象的归属特性,那么这样在外部再次重载时候可能会产生调用冲突 )

示例如下:

Game.h

#include <iostream>
#include <ostream>
using namespace std;
class Game
{
public:
 Game() { status = 0; }
 ostream & operator<<(Game & game)
 {
  cout << game.status;
  return cout;
 }
private:
 int status;
};
#endif

main.cpp

#include <iostream>
#include "Game.h"
using namespace std;
ostream &operator<<(Game &game1, Game &game2)
{
 cout << 4 << endl;
 return cout;
}
int main()
{
 Game game;
 //game<<game;//error,主要原因是操作符参数格式问题(第一个即表示参数有表示归属相当于".")于是类内和外部的产生冲突,如果是其他一般函数,则不会遇到这种情况
 return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值