page contents

C++——运算符重载

C++之运算符重载

运算符重载

 1、运算符重载,把运算符重新定义行的规则

 2、几乎所有的运算符都可以被重载,出以下:. ::  ?:  sizeof这些是不能做重载的运算符

 3、运算符重载基本上出现再类中和结构中

 4、运算符重载要满足运算符原来的规则

 5、运算符理解为函数的一个表现

 


如何进行运算符重载

1、运输符重载需要考虑:考虑返回值,两个数相加,不可能返回地址也不能返回名义个操作数,只能返回一个新的变量,只能用于拷贝。

2、operator<(需要重载的符号)>来表示函数名,参数列表,用为通过对象的成员函数来实现运算符重载,所以this算一个参,只能是第一个参

3、给运算符重载,其实是做一些直接用运算符做不到的操作,对于运算符重载,可能会把这个运算符重载成其他的操作(不输入这个运算符的操作,比如+,结果操作不是+),所以对于运算符重载要认真使用

4、对于运算符的重载的调用,可以直接用运算符,也可以显示调用(运算符重载是属于类的,不是友元)


class A

{

 

public:

 A(){ a = 0; }

 A(int b)

 {

  a = b;

 }

 int operator+(const A &p)//重载+号

 {

  return this->a + p.a;

 }

 A operator-(const int a)//重载-号

 {

  A myA;

  myA.a = this->a - a;

  return myA;

 }

 void add(const int a)

 {

  this->a = this->a + a;

 }

 //前置++

 A& operator++()//重载前置++

 {

  this->a++;

  return *this; //*this 当前对象

 }

 //后置++

 A operator++(int)//就只是用int来区分前后++而已   重载后置++

 {

  A temp = *this;//先保存当前数据,用来作为返回对象

  this->a++;//自增

  return temp;

 }

 friend ostream& operator << (ostream &cout, A &myA);

 friend istream& operator >> (istream &cin, A &myA);

 int a;


};


ostream& operator << (ostream &cout, A &myA)

{

 cout << myA.a;

 return cout;

}

istream& operator >> (istream &cin, A &myA)

{

 cin >> myA.a;

 return cin;

}

  • 发表于 2021-06-16 21:12
  • 阅读 ( 561 )
  • 分类:C/C++开发

0 条评论

请先 登录 后评论
小威
小威

64 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1478 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章