zoukankan      html  css  js  c++  java
  • 运算符重载总结

    重载为普通函数(正常情况下都是友元函数)时,参数个数为运算符目数;

    重载为成员函数时,参数个数为运算符目数减1.

    一般情况下,单目运算符最好重载为类的成员函数;双目运算符则最好重载为类的友元函数。

    什么情况下成员函数不能解决问题?比如Complex c; c+5相当于调用c.operator+(5), 可以用;但是5+c就不行了。于是只能重载为普通函数(即友元函数)了。

    =()[]、-> 只能重载为成员函数。

    重载赋值操作符=的意义:浅拷贝/深拷贝(可参考手写String类)。

    前置运算符是一元运算符,后置运算符是二元运算符(多一个int参数,无实际意义,仅用于区分前后置)。

    ref      ref2

    拓展:

    1. 箭头操作符(成员访问操作符)的重载   ref4      ref5

    箭头操作符是一元操作符!(虽然可能看起来像二元操作符)

    重载箭头操作符必须返回指向类类型的指针者返回定义了自己的箭头操作符的类类型对象

    以point->action为例,

    如果 point 是一个指针,那么这就是一个普通指针的调用;(因为只有对象才有成员函数啊,普通指针又不是什么对象)

    如果 point 是定义了 operator-> 操作符的类的一个对象,则将递归应用该操作符。(就是这么定义的)

    详细参考 ref4 里的例子。

    2. new、delete的重载    ref3

  • 相关阅读:
    HTML head 头标签
    p标签text-align:justify以及CSS文字两端对齐
    css雪碧图制作
    ps去掉图片上的文字
    Qt Quick之TableView的使用
    Qt Quick之Canvas
    Qt Quick中的信号与槽
    QT之在QML中使用C++类和对象
    rhel7+apache+c cgi+动态域名实现web访问
    (转载)JDOM/XPATH编程指南
  • 原文地址:https://www.cnblogs.com/forcheryl/p/4702216.html
Copyright © 2011-2022 走看看