C++---多态性

1.多态性

多态是操作接口的

2.运算符重载

对已有的运算符赋予更多的含义,使同一运算符作用于不同类型的数据导致不同的行为。运算符重载是对新类型数据的实际需要,对原有运算符进行适当的改造。
运算符的重载实际上就是函数的重载。
运算符重载的类型有两种,重载为非静态成员函数和重载为非成员函数。
运算符重载为类的成员函数的一般语法形式:
返回类型 operator 运算符(形参表)
{
  函数体
}
运算符重载为非成员函数的一般语法形式:
返回类型 operator 运算符(形参表)
{
  函数体
}
返回值类型:重载运算符的返回值类型,也就是运算符的结果类型
operator:定义运算符重载函数的关键字。
运算符:就是运算符的名称,必须是可以重载的运算符,比如重载加法运算符,就写“+”。
形参表:给出重载运算符
运算符重载举例---复数的四则运算
#include <iostream>
using namespace std;

class Complex
{
public:
    Complex(double r=0.0, double i=0.0):real(r),imag(i){}
    Complex operator+(const Complex &c2)const;
    Complex operator-(const Complex &c2)const;
    Complex operator*(const Complex &c2)const;
    Complex operator/(const Complex &c2)const;
    void display()const;
private:
    double real;
    double imag;
};

Complex Complex::operator+(const Complex &c2)const
{
  return Complex(real+c2.real,imag+c2.imag);
}
Complex Complex::operator-(const Complex &c2)const
{
  return Complex(real-c2.real,imag-c2.imag);
}
Complex Complex::operator*(const Complex &c2)const
{
  return Complex(real*c2.real,imag*c2.imag);
}
Complex Complex::operator/(const Complex &c2)const
{
  return Complex(real/c2.real,imag/c2.imag);
}
void Complex::display()const
{
    cout<<"the real is: "<<real
        <<"  the imag is: "<<imag<<endl;
}
int main()
{
    Complex c1(4,5),c2(6,7),c3;
    int x=9;
    c1.display();
    c2.display();
    cout<<"the c2-c1: ";
    c3=c2-c1;
    c3.display();
    c3=c2+c1;
    cout<<"the c2+c1: ";
    c3.display();
    c3=c2*c1;
    cout<<"the c2*c1: ";
    c3.display();
    c3=c2/c1;
    cout<<"the c2/c1: ";
    c3.display();
    return 0;

}

其中的运算符+ 、-、*、/(B),都重载为类Complex的成员函数,定义Ccomplex的对象c1、c2,经过重载以后,表达式oprd1 B oprd2相当于 oprd.operator B(oprd2)。

其中返回的时候,创建一个无名对象并返回:

  return Complex(real+c2.real,imag+c2.imag);  //创建无名对象,并返回
这是临时的语法,含义是:调用Complex 构造函数创建一个临时对象并返回它。当然也可以用常规方式:
Complex Complex::operator+(const Complex &c2)const
{
  return Complex c4(real+c2.real,imag+c2.imag);  //常规方式
}





复数运算符举例

3.虚函数

4.抽象类


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值