zoukankan      html  css  js  c++  java
  • 第十章 运算符重载

    第十章 运算符重载

    1.运算符重载的方法

    (实质:函数重载)

    *一般格式:

    函数类型名operator 运算符名称(参数表){函数体;}

    2.运算符重载的规则

    *不允许定义新的运算符

    *允许重载的运算符

    双目运算符

    +(加法)  - (减法)  * (乘法) / (除法)   %(取模)

    关系运算符

    ==(等于) != (不等)  <   >   <=   >=   

    逻辑运算符

    ||(或)   && (与)  !(非)

    单目运算符

    + (正)  -(负)   *(指针)   &(取址)

    自增自减运算符

    ++     --

    位运算符

    !(按位或)&...与)~...取反)^...异或)<<...左移)>>(右移)

    赋值运算符

    =   +=    - =   *=   /=   ^=   <<=  >>=...

    空间申请与释放

    New    delete   new[]  delete[]

    其他

    ()   ->   ->*   ,   []

    *不允许重载的运算符:.   *  ::   sizeof  ?:

    *不能改变操作对象的个数

    *不能改变运算符的优先级

    *不能改变运算符的结合性

    *重载运算符的函数不能有默认参数

    *重载的运算符必须与用户自定义类型使用

    *用于类对象的运算符一般需要重载(=&可以不用)

    3.运算符重载函数作为类成员函数和友元函数

    运算符重载的两种形式:1成员函数2友元函数

    *如果运算符重载函数作为成员函数,它可以通过this指针自由访问本类的数据成员,所以可以省略一个形参

    *双目运算符重载为友元函数是,由于友元函数不是该类的成员函数,因此在函数的形参表中必须有两个参数,不能省略

    约定:

    *赋值运算符“=”、下标运算符“[ ]”、函数调用运算符“()”、成员运算符“->”必须作为成员函数重载

    *流插入“>>”、流提取运算符“<<”、类型转换运算符函数不能定义为类的成员函数,只能作为友元函数

    *一般双目运算符重载为友元成员函数

    4.双目运算符重载

    5.单目运算符重载

    自增自减运算符:

    类名 operator ++();//前缀自增

    类名 operator ++ int); //后缀自增

    //这里int只当一个符号区别前缀和后缀

    6.流插入运算符和流提取运算符重载

    Friend istream& operator >>(istream & 自定义名, 类名 & 形参名);{

    函数体;

    Returned 自定义名;

    Friend istream& operator <<(ostream & 自定义名, 类名 &形参名);{

    函数体;

    Returned 自定义名;

    7.有关运算符重载

    *确定要重的是哪一个运算符,向把它用于哪一个类

    *了解头文件包含了那些运算符的重载

    8.不同类型数据间的转换

    *标准类型数据见的转换

    隐式、显示:类型名(数据)   或者  (类型名)数据

    *用转换构造函数进行不同类型数据的转换

    (将一个其他类型的数据转换成一个类的对象)

    转换构造函数只能有一个参数,如果有多个参数的话,就不是转换构造函数

    类名(指定类型的数据)

    类内转换构造函数: 类名(类型名& 对象){函数体;}

    *类型转换函数(作用:将一个类的对象转换成另一类的数据)

    一般形式:

    Operator 类型名()

    {函数体;}

    ·在函数名前不能指定函数类型,函数没有参数;

    ·类型转换函数只能作为成员函数,因为转换的主题是本类的对象。不能作为友元函数或者普通函数;

    *在已经定义了相应的转换构造函数情况下, 将运送符“+”函数重载为友元函数,在进行两个类相加的时候,可以实现交换率

    *如果运算符函数重载为成员函数,其的第一个参数必须是本类的对象。当第一个操作的对象不是类对象时,不能将运算符重载为成员函数。如果讲运算符“+”函数重载为类的成员函数,交换率不适用

    约定:将双目运算符函数重载为友元函数。单目运算符重载为成员函数;

    个人笔记,欢迎指教,未经允许,请勿转载。

    个人分享,欢迎指导,未经允许,请勿转载。谢谢!
  • 相关阅读:
    Effective Java 19 Use interfaces only to define types
    Effective Java 18 Prefer interfaces to abstract classes
    Effective Java 17 Design and document for inheritance or else prohibit it
    Effective Java 16 Favor composition over inheritance
    Effective Java 15 Minimize mutability
    Effective Java 14 In public classes, use accessor methods, not public fields
    Effective Java 13 Minimize the accessibility of classes and members
    Effective Java 12 Consider implementing Comparable
    sencha touch SortableList 的使用
    sencha touch dataview 中添加 button 等复杂布局并添加监听事件
  • 原文地址:https://www.cnblogs.com/hello-OK/p/7056293.html
Copyright © 2011-2022 走看看