2017.9.22

作者: 张正戈hg | 来源:发表于2017-09-22 22:07 被阅读0次

今天学习的是运算符的重载:

运算符重载:


使用运算符重载的一般格式为:

类型名  operator   运算符(形参表)

{  函数体   }

其中operator是关键字,类型名为重载运算符的返回类型,即运算结果返回类型。

例:

下面是运算符重载的友元函数:

class aa{   //运算符重载的友元形式

float a;    float b;

public:

float &aaa(){return(a);}

float &bbb(){return(b);}

friend aa operator +(aa&,aa&);};

aa operator +(aa & a,aa& b)

{aa c;

c.a=a.a+b.a;

c.b=a.b+b.b;

return(c);  }

void main()

{  aa a,b;

a.aaa()=1; a.bbb()=2;

b.aaa()=3; b.bbb()=4;

aa c=a+b;//等价aa c=operator +(a,b);

cout<<c.aaa()<<endl<<c.bbb();}


aa c=a+b;//等价aa c=operator +(a,b);

aa c=a+b;//等价aa c=operator +(a,b);

aa c=a+b;//等价aa c=operator +(a,b);


aa operator +(aa& a,aa& b)//不提倡改变运算符的含义


运算符重载时参数个数不可以超过原来数目


运算符重载时参数类型不能全为基本类型,至少有一个操作对象是自定义类型

在C++中几乎所有的运算符(除“.”(成员选择符)、“.*”(成员对象选择符)、“->*(成员指针选择符)”、“::”、“?:”、“sizeof”外)都可以被重载。只能重载C++中已有的运算符,不允许创建新的运算符.


赋值运算符重载

拷贝构造函数和赋值操作符都是用来拷贝一个类的对象给另一个同类型的对象。

void fn(A a)

{ A na=a;  //拷贝构造函数:将一个对象拷贝到另一个新对象

A b;

b=a;}//赋值运算符:将一个对象为另一个已经存在的对象赋值

编译器提供默认的拷贝构造函数和赋值运算符的运作机制。

就是将对象中的每个数据成员拷贝到目标对象相应的数据成员中。

若类的数据成员中有指向动态分配空间的指针,通常定义拷贝构造函数,此时,应重载赋值运算符。


类型转换运算符声明的形式:

operator 类型名();

没有参数,没有返回类型,(其返回类型由函数名字指定)但是函数体中必须包含return语句。

只能作为成员函数。

相关文章

  • 2017.9.22

    今年的开学日和去年完全相同,当天晚上在操场的感觉,和一年前一模一样。可惜了,感觉一样,人却不一样了。 在抽空回家的...

  • 2017.9.22

    今天终于结束了忙碌的生活,想想收获挺多的,接下来就是练习自己的口才了,包括演讲和英语,今天上午状态太差,分析了一下...

  • 2017.9.22

    昨天忘记写日记了,今天也差点忘记,本来想补上,但是今天看了篇不错的文章,于是想想就顺其自然吧。 这几天找房子找的挺...

  • 2017.9.22

    人走入了自行车道…… 自行车被骑入了了机动车道…… 机动车难道要走人行道? …………………… 陷入死循环。 窗帘飘...

  • 2017.9.22

    离考研还有93天。 完成任务:1.做了一套数学真题 2.百词斩50个英语单词 3一篇经济学人双语文章 感受:1.数...

  • 2017.9.22

    我喜欢你,但是我不会告诉你,因为我还不配。我会一直陪着你,但是我不能开口许你一个未来。

  • 2017.9.22

    有一句话我很喜欢,“越努力越幸运”。后来,我总是在想,为什么越努力就会越幸运呢?因为,你越努力,你就会获得更多的资...

  • 2017.9.22

    1.人生需要休息,来整理往日的情绪,但要及时调整状态,进入下一个阶段。 2.他人对你的尊重跟你的实力有关。 3.人...

  • 2017.9.22

    努力学习,不断学习和考试。为了将来。为了能脱离这样的一个环境。加油。

  • 2017.9.22

    今天脑子算清醒,上午做了三道增值税的综合题,两道计算题,加上部分选择题,总结下来,题目中坑很多,一不小心就掉进去了...

网友评论

      本文标题:2017.9.22

      本文链接:https://www.haomeiwen.com/subject/rufqextx.html