c++操作符重载方法

c++操作符重载方法

ID:22337300

大小:21.52 KB

页数:6页

时间:2018-10-28

c++操作符重载方法_第1页
c++操作符重载方法_第2页
c++操作符重载方法_第3页
c++操作符重载方法_第4页
c++操作符重载方法_第5页
资源描述:

《c++操作符重载方法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1.概述 C++中对类对象(抽象数据类型实例)的操作通过向对象发送消息完成,使用C++的操作符链接用户自定义类型对象的过程叫做操作符重载,编译器在处理表达式时,会根据操作符的使用方式生成合适的代码。 C++强大的功能不仅在于用户可以自己定义新的类型,还表现在允许重载现有的大多数操作符,使这些操作符可以与类对象结合使用,给操作符赋予新类型的含义。 操作符重载通过编写函数定义实现,被重载的函数名格式为operator+运算符,作用于类对象的操作符必须进行重载,有以下两个例外: 1.赋值操作符无需显式重载就可以作用域每一种类型,默认行为是为类

2、的数据成员赋值,这种默认的行为对含有指针类型的数据成员的类是危险的,对于含有指针数据成员的类,赋值操作符必须进行重载; 2.地址操作符无需重载就可以英语与各种类对象,返回对象的内存地址,地址操作符也可以进行重载。 可以重载C++内部定义的操作符,这样可以为用户自定义的类型提供简洁的表达式,必须手动编写操作符重载函数,这些函数可以作为成员函数,也可以作为友元函数。 一些限制: a.不改变优先级 b.不改变结合性 c.不改变操作数的个数 d.不改变作用域内部类型的方式  操作符重载只能随用户自定义类型的对象一起使用,或者随用户自定义类型的对

3、象和内部类型对象混合使用,这样可以防止改变作用域内部类型的方式。  操作符只能够显式重载,要保证相关操作符的一致性,可以用一个操作符实现另一个操作符。 2.类成员函数和友元函数   在重载操作符()[]->或者任何赋值操作符时,操作符重载函数必须声明为类的一个成员;  如果操作符的左操作数是类的对象或者类对象的引用 ,才可以用成员函数实现,如果左操作数不是类的对象,也不是类对象的引用,则只能用一个非成员函数实现,如流插入操作符和流读取操作符。  只有当二元操作符左操作数是该类的一个对象,或者一元操作符的操作数是该类的一个对象时,才有必要

4、定义为类的操作符成员函数。  选择非成员函数重载操作符的另一个原因是使操作符具有可交换性。  3.    (1)重载流插入和流读取运算符    a.这两个运算符本身可以处理char*字符串和指针在内的各种内部数据类型;    b.这两个操作符重载函数只能够定义为类的友元函数     [cpp] viewplaincopy1.friend ostream & operator <<(ostream & output,const PhoneNumber &);  2.      friend istream & operator >>(is

5、tream & input,PhoneNumber &);   操作符重载函数包含两个参数,一个是对istream/ostream的引用,另一个是对用户自定义类型的引用,当编译器遇到语句 cin>>phone时,编译器将生成函数调用operator>>(cin,phone)同样,编译器督导cout<

6、态类型,以便访问类的非静态数据,静态函数只能够访问类的静态数据。 重载一元操作符时,要将重载函数定义为成员函数而非友元函数,这样可以避免破坏类的封装性。 (3)重载二元操作符  可以重载为带一个参数的非静态成员函数,也可以重载为带两个参数的友元函数,其中一个参数是类对象或者类对象的引用,一般情况下,如果操作符的左操作数是类对象或者引用,则定义为成员函数比较好。 (4)拷贝构造函数  下标运算符的重载函数需要返回值的引用,这样可以作为左值,进行赋值。  需要复制对象时,需要调用复制构造函数,通过建立对象的副本(拷贝),初始化相同类型的对象

7、(构造函数),必须谨慎对待拷贝构造函数,避免两个对象指向同一个动态分配的存储区,需要复制对象时,都需要创建拷贝构造函数  复制构造函数应使用引用调用,而非传值调用,否则复制构造函数会出现无穷递归,因为对于传值调用,建立传入复制构造函数的对象副本会造成复制构造函数的递归调用。 如果构造函数仅把源对象的指针复制到目标对象的指针,这两个对象将指向同一块动态分配的内存块,执行析构函数释放该内存块,结果将导致另一个对象的ptr没有定义。 类的对象包含的指向动态分配的内存的指针,如果不为其提供重载的赋值操作符和复制的构造函数会造成逻辑错误。 防止类

8、对象被复制是能够实现的,只须令重载的赋值操作符和复制构造函数为private即可。 对于下标运算符的处理,数组中相应下标的元素作为引用返回,以便能够作为左值,而在常量版本的情况下返回右值。 (5)类型转换 

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。