下载此文档

C 运算符重载知识点总结.docx


文档分类:IT计算机 | 页数:约11页 举报非法文档有奖
1/11
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/11 下载此文档
文档列表 文档介绍
C++运算符重载知识总结

    在C++中,多态性的实现和联编(也叫绑定)这一概念有关。
源程序—>编译、连接—>可执行文件 这一过程时把可执行代码联编在一起的过程。其中在运行之前就完成的联编叫做静态联编,又叫前期联编;而在程序运行时才完成的联编叫动态联编,也叫后期联编。
静态联编(前期联编):指系统在编译时就决定如何实现某一动作。要求在编译时就知道调用函数的全部信息。
静态联编支持的多态性成为编译时多态性(静态多态性),通过函数重载(包括运算符重载)和模板实现。
优点:函数调用速度很快,效率高。
动态联编(后期联编):指系统在运行时动态实现某一动作。采用这种联编方式,一直要到程序运行时才能确定调用哪个函数。
动态联编支持的多态性成为运行时多态性(动态多态性),通过虚函数实现。
优点:提供了更好的灵活性、问题抽象性和程序易维护性。


    为了表达上的方便,人们希望预定义的运算符(如+、-、*、/等)在特定的对象上以新的含义进行解释,如希望能够实现两个复数类的加减,这就需要通过运算符重载来解决。
    C++中进行运算符重载时,必须定义一个运算符重载函数,其名字为operator,后随一个要重载的运算符。
函数
功能
operator+
加法
operator-
减法
operator*
乘法
operator<
小于
……
…...
例如,使两个Complex类对象相加的例子
#include <iostream>
using namespace std;
class Complex
{
public:
    double real;
    double imag;
    Complex(double r=0,double i=0)
    {
        real=r;imag=i;
    }
};
Complex operator+(Complex co1,Complex co2)//类外定义运算符+的重载函数
{
    Complex temp;
    =+;
    =+;
    return temp;
}
int main()
{
    Complex com1(,),com2(,),total1,total2;
    total1=operator+(com1,com2);//运算符重载函数第一种调用方式,显式调用
    cout<<"real1="<<<<",imag1="<<<<endl;
    total2=com1+com2;//运算符重载函数第二种调用方式,隐式调用
    cout<<"real2="<<<<",imag2="<<<<endl;
    return 0;
}
C++语言对运算符重载制定了以下一些规则:
,不能重载的只有以下几个:
.
成员访问运算符
.*
成员指针访问运算符
::
作用域运算符
sizeof
长度运算符
?:
条件运算符
,不允许用户自己定义新的运算符。
,不建议改变原运算符的含义。(例如将+运算符重载为进行减法运算)
(即操作数)的个数。


(或其引用)。目的是防止用户修改用于标准类型数据的运算符性质。
、类成员函数、类的友元函数。
“="可以不必用户进行重载。


1)在类的内部,形式为:
    friend 函数类型 operator 运算符(形参表)
    {
        函数体    
    }
2)类内声明,类外定义,形式为:
    class X{
        friend 函数类型 operator 运算符(形参表);
    };
    
     函数类型 operator 运算符(形参表)
   

C 运算符重载知识点总结 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数11
  • 收藏数0 收藏
  • 顶次数0
  • 上传人qiang19840906
  • 文件大小25 KB
  • 时间2021-07-28