美文网首页c++学习笔记
c++学习笔记之运算符重载

c++学习笔记之运算符重载

作者: chzphoenix | 来源:发表于2017-12-13 17:40 被阅读8次

c++学习笔记系列:

http://blog.csdn.net/column/details/17301.html

1、重载运算符

void operator+(....) //重载"+"运算符

(1)如果是成员函数形式,那么必须是非static

(2)使用运算符必须重载,除了“=”、“&”、“,”这三个可直接使用,也可以重载。

(3)不能重载的运算符“.”、“.*”、“::”、“?:”

(4)重载不能改变运算符的优先级,不能改变结合律,不能改变运算符“元数”(操作数)

(5)不能创建新运算符

(6)不能改变运算符对基本类型对象操作的含义。重载只能对用户自定义类型对象或基本类型和

用户自定义类型混合使用

2、相关运算符

如重载加法运算符 obj2 = obj2 + obj1

但是obj2 += obj1不成立,必须重载“+=”运算符才行。

3、成员函数和全局函数

(1)“()”、“[]”、“->”或任何赋值运算符重载,必须声明为类成员函数。其他运算符则都可以

(2)如果是成员函数,那么左边操作数(或唯一操作数)必须是该类的对象。否则用全局函数重载,如重载流操作“<<”。

(3)使用全局函数可以使重载的运算符有可交换性,即左右操作数可以交换。

(4)一元运算符可以重载为一个不带参数的非static成员函数或带一个参数的全局函数(全局函数的参数必须是该类的对象或引用)

(5)二元运算符可以重载为带一个参数的非static成员函数或带两个参数的全局函数(其中一个参数必须是该类的对象或引用)

4、自我赋值

如果出现自我赋值,而operator=未检测,那么函数会在赋值操作前删除动态内存,使指针指向已释放的内存卡,导致运行错误。

5、类型转换

c++基本类型可以互相转换,用户自定义类和基本类型或用户自定义类之间则不能。

转换运算符又称强制类型转换运算符:

classA::operator classB() const;

当编译器遇到static_cast<classB>(a)时(a是classA一个对象),会调用上面函数进行转换。

(1)转换构造函数:任何单一参数的构造函数都可以看成是转换构造函数

(2)转换运算符和转换构造函数有点事编译器可以隐式调用。

(3)在重载运算符函数中,这种自定义的类型转换只能隐式调用一级。

6、重载自增自减(++、--)

前置 class &operator++();

后置 class operator++(int);

后置函数中int参数为0,是一个哑值,仅为了区分前置和后置。

后置自增自减会产生临时对象,所以尽量使用前置自增自减。

7、禁止隐式转换

左右单参数构造函数都可以用做隐式类型转换。

但是如果有些这类构造函数不像被当成隐式转换构造函数,需要声明成explicit即可。

explicit只能用于声明单参数构造函数,声明其他构造函数或成员函数会编译错误。

相关文章

  • 第十一章 使用类

    运算符重载 运算符重载是一种形式的C++多态。运算符重载将重载的概念扩展到运算符上,允许赋予C++运算符多种含义。...

  • 1.2.15_C++ 关系运算符重载

    C++ 重载运算符和重载函数 C++ 语言支持各种关系运算符( < 、 > 、 <= 、 >= 、 == 等等),...

  • C++ 运算符重载

    运算符重载将重载的概念扩展到运算符上,允许赋予C++运算符多种含义。实际上,很多C++运算符已经重载。将*运算符用...

  • C++运算符重载

    C++运算符重载的实质:运算符重载的实质就是函数重载或函数多态。运算符重载是一种形式的C++多态。目的在于让人能够...

  • C++运算符重载-下篇 (Boolan)

    C++运算符重载-下篇 (Boolan) 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符...

  • C++运算符重载-上篇 (Boolan)

    C++运算符重载-上篇 (Boolan) 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符...

  • C++ 重载运算符

    C++重载运算符

  • C++重载

    重载 C++语言规定: 重载的运算符要保持原运算符的意义。只能对已有的运算符重载,不能增加新的运算符。重载的运算符...

  • 2017 09 22

    Am:对运算符重载进行学习: 基础定义部分: 1.重载定义:根据自己的需要对C++已提供的运算符进行重载,赋予新的...

  • 1.2.17_C++ ++ 和 -- 运算符重载

    C++ 重载运算符和重载函数 递增运算符( ++ )和递减运算符( -- )是 C++ 语言中两个重要的一元运算符...

网友评论

    本文标题:c++学习笔记之运算符重载

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