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 类型名()

    {函数体;}

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

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

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

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

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

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

    个人分享,欢迎指导,未经允许,请勿转载。谢谢!
  • 相关阅读:
    android控件
    解决C#项目出现“此项目引用这台计算机上缺少的 NuGet 程序包。使用 NuGet 程序包还原可下载这些程序包。有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 ..packagesMicrosoft.Net.Compilers.1.0.0uildMicrosoft.Net.Compilers.props”
    C#解密退款req_info结果通知
    解决C#中调用WCF方法报错:远程服务器返回错误 (404) 未找到
    解决网页出现 net::ERR_ABORTED 404 (Not Found)问题
    winform执行程序报错:已停止工作,windows正在检查该问题的解决方案
    C#操作数据表中XML格式的数据
    为了开篇
    iOS隐私政策
    在Android中调用KSOAP2库访问webservice服务出现的服务端传入参数为null的问题解决
  • 原文地址:https://www.cnblogs.com/hello-OK/p/7056293.html
Copyright © 2011-2022 走看看