美文网首页
14重载运算与类型转换

14重载运算与类型转换

作者: 龟龟51 | 来源:发表于2017-10-26 11:07 被阅读0次

    14重载运算与类型转换

    14.1基本概念

    Operator重载的运算符包含返回类型、参数列表以及函数体。

    左侧运算对象传递给第一个参数,而右侧运算对象传递给第二个参数。

    不应该被重载:逻辑与、或运算符,逗号运算符;&&和||;不重载逗号运算符和取地址运算符。

    重载的赋值运算应该继承而非违背其内置版本的含义。

    选择作为成员或者非成员

    如果我们想提供含有类对象的混合类型表达式,则运算符必须定义成非成员函数。它的左侧运算对象必须是运算符所属类的一个对象。

    14.2输入和输出运算符

    输入输出运算符是非成员函数

    14.3算术和关系运算符

    14.3.1相等运算符设计准则

    14.3.2关系运算符设计准则

    14.5下标运算符

    必须是成员函数

    14.6递增和递减运算符

    前置++i

    后置i++

    接受一个额外的(不被使用)int类型的形参,编译器会提供0

    14.7成员访问运算符

    14.8函数调用运算符

    定义了调用运算符,则该类的对象称作函数对象。可以调用这种对象,“行为像函数一样”。

    14.8.1lambda是函数对象

    ....

    14.8.2标准库定义的函数对象

    14.8.3可调用对象与function

    标准库function类型

    重载的函数与function

    不能(直接)将重载的函数名字存入function类型的对象中,以免二义性,解决途径是存储函数指针。

    14.9重载、类型转换和运算符(还未get到点)

    14.9.1类型转换运算符

    可以面向任意类型(void除外)进行定义,不允许转换成数组或者函数类型,但允许转换成指针(包括数组指针及函数指针)或者引用类型。必须定义成类的成员函数,通常不应该改变转换对象的内容,一般定义成const成员。

    显示的类型转换运算符(explicit),一般要通过显示的强制类型转换。但存在一个例外,就是表达式被用作条件,以下表达式出现下列位置时,会隐式的执行转换。

    14.9.2避免有二义性的类型转换

    14.9.3函数匹配与重载运算符

    相关文章

      网友评论

          本文标题:14重载运算与类型转换

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