2017.9.22

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

运算符重载:


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

类型名  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语句。

只能作为成员函数。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 星期五 阵雨 今天学习了运算符重载 笔记内容: 一般格式是: 类型名 operator 运算符(形参表){函数体...
    战昭辰阅读 221评论 0 0
  • 运算符重载 1.一般格式为: 类型名 operator 运算符(形参表){函数体} 运行方式:调用函数进行计算,...
    张梦涵625阅读 224评论 0 0
  • C++运算符重载-下篇 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符和二元逻辑运算符4...
    Haley_2013阅读 1,457评论 0 49
  • 葉無歌阅读 231评论 0 9
  • 偶然听到了于丹老师的论语心得。一个列表上,孝道是最顶端第一期的主题。也是,百善孝为先嘛。我试着听下去,不曾想,许久...
    鹤兰阅读 1,358评论 3 3