C++语言程序设计 问题举例一 复数的运算 运 算class Complex{/复数类声明 符 public: 重 Complex(double r 0.0,double i 0.0){ real r;imag=i; 载 void display()const; /显示复数的值 private: double real; double imag; };
C++语言程序设计 6 问题举例——复数的运算 class Complex { //复数类声明 public: Complex(double r = 0.0,double i = 0.0) { real = r; imag=i; } void display() const; //显示复数的值 private: double real; double imag; }; 运算符重载
C++语言程序设计 问题举例 复数的运算 远 算 ●用“+”、“”能够实现复数的加减运 符 算吗? 重 载 ●3 实现复数加减运算的方法 一重载“+”、“”运算符
C++语言程序设计 7 问题举例——复数的运算 用“+”、“-”能够实现复数的加减运 算吗? 实现复数加减运算的方法 ——重载“+”、“-”运算符 运算符重载
C++语言程序设计 运算符重载的实质 运 算 ·运算符重载是对已有的运算符赋予多重含义 符 。必要性 重 一C++中预定义的运算符其运算对象只能是基本数 据类型,而不适用于用户自定义类型(如类) 载 。实现机制 一将指定的运算表达式转化为对运算符函数的调 用,运算对象转化为运算符函数的实参 编译系统对重载运算符的选择,遵循函数重载 的选择原则
C++语言程序设计 8 运算符重载的实质 运算符重载是对已有的运算符赋予多重含义 必要性 – C++中预定义的运算符其运算对象只能是基本数 据类型,而不适用于用户自定义类型(如类) 实现机制 – 将指定的运算表达式转化为对运算符函数的调 用,运算对象转化为运算符函数的实参。 – 编译系统对重载运算符的选择,遵循函数重载 的选择原则。 运算符重载
C++语言程序设计 规则和限制 运 算 ● C+不允许重载下列四个运算符: .*:?: 符 重 ●只能重载C++语言中已有的运算符, 不可臆造新的。 载 ·不改变原运算符的优先级和结合性。 ●不能改变操作数个数。 ● 经重载的运算符,其操作数中至少应 该有一个是自定义类型
C++语言程序设计 9 运算符重载 规则和限制 C++不允许重载下列四个运算符: . .* :: ?: 只能重载C++语言中已有的运算符, 不可臆造新的。 不改变原运算符的优先级和结合性。 不能改变操作数个数。 经重载的运算符,其操作数中至少应 该有一个是自定义类型
C++语言程序设计 两种形式 运 算 符 。重载为类的非静态成员函数 重 重载为非成员函数 载 米
C++语言程序设计 10 两种形式 重载为类的非静态成员函数 重载为非成员函数 运算符重载