运算符重载疑难知识点总结

大一下学期疑难知识总结目录:点击打开链接

1.

不能重载的运算符只有六个,分别是成员访问运算符“.”、成员指针运算符“*”和“->”、作用域运算符“∷”、sizeof运算符和三目运算符“?:”。

2.

运算符重载的规则

只能重载C++预定义中已有的运算符,不可自己“创造”新的运算符进行重载。

重载功能应当与原有功能相类似。

不能改变运算符的操作数的个数;

 不能改变运算符原有的优先级;

 不能改变原有的结合性;

 不能改变运算符对预定义类型数据的操作方式,即至少要有一个操作对象是自定义类型,这样做的目的是防止用户修改基本类型数据的运算性质。

3.

 

A operator +(A &a)      //成员函数重载运算符+

       {      A  t;     t.i=i+a.i; return t;  }

a3=a1+a2; 相当于a3=a1.operator+(a2)

 

Test operator +(Test &t1, Test&t2) //友元函数重载运算符+

{  Test t3;

    t3.a=t1.a+t2.a;

    return t3;

}

 

4.

成员函数重载++(前后缀) 

class Time

{public:

       Time(){minute=0;sec=0;}

       Time(intm,int s):minute(m),sec(s){ }

       Time operator++( );    //声明前置自增运算符“++”重载函数

       Time operator++(int);   //声明后置自增运算符“++”重载函数

         void display(){cout<<minute<<“minute”<<sec<<“sec”<<endl;}

private:

       intminute;

       intsec;

};

Time Time∷operator++( )    //定义前置自增运算符“++”重载函数

{       sec++;

       if(sec>=60)

       {     

              sec=0;         //满60秒进1分钟

              ++minute;

       }

       return *this;         //返回当前对象值

}

Time Time∷operator++(int)  //定义后置自增运算符“++”重载函数

{

       Time temp(*this);

       sec++;

       if(sec>=60)

       {

              sec=0;

              ++minute;

       }

       return temp;         //返回的是自加前的对象

}

b)     如何用成员函数重置单目运算符

friend void operator ++(Point &point)//重载前缀++

{++point.x;   ++point.y;}

 

friend Point operator ++(Point&point,int a) //重载后缀++

{     

Point p(1,1); //创建任意一个对象

    p=point;

       ++point.x;   

       ++point.y;

       returnp;

}

 

5

c=a+b;      实际上是 c=a.operator+(b);

c=++a;      实际上是 c=operator++(a);

c+=a;       实际上是 c.operator+=(a );   

6.

有些运算符不能用友元函数进行重载,它们是:=,(),[ ],->等。

7.

成员函数

AB operator+(int x)

{      ABtemp;

       temp.a=a+x;

       temp.b=b+x;

       returntemp;

}

ob2=ob1+20;

//ob2=30+ob1;这种情况下,系统预定义的数据类型不能出现在运算符的左边

友元函数

friend AB operator+(AB ob,int x);
friend AB operator+(int x,AB ob);
AB operator +(AB ob,int x){
	AB temp;
	temp.a=ob.a+x;	temp.b=ob.b+x;	return temp;}
AB operator +(int x, AB ob){
   AB temp;
  temp.a=ob.a+x;	temp.b=ob.b+x;	return temp;}

 7.输入输出不能被重载为成员函数!!!

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值