C++ [ 多态 ]

来源:互联网 发布:运动保温杯 知乎 编辑:程序博客网 时间:2024/06/16 17:25

多态是指同样的消息被不同类型的对象接收导致不同的行为,消息是对类的成员函数的调用,不同的行为是指不同的实现

运算符重载:对已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据时导致不同的行为

函数类型 operator 运算符( 形参表 ) { 函数体 }       【 函数参数比原来操作数个数少一个 】

complex operator + ( complex c2 )

也可以  friend 函数类型 operator 运算符( 形参表 ) { 函数体 }     【 参数个数与原操作数个数相同 】

双目运算符

单目运算符

Clock& operator ++() 前置弹幕运算符

{

......;   return *this;

}

Clock operator ++( int ) 后置单目运算符

{

           Clock old = *this; ++(*this); return old;

}

虚函数

动态绑定的基础,必须是非静态的成员函数,经过派生后,在类族中就可以实现运行过程中的多态

虚函数声明只能出现在类声明中的函数原型声明中,而不能在成员函数实现的时候

运行中多态3个条件:满足类型兼容规则,声明虚函数,由成员函数来调用或者通过指针、引用来访问虚函数

virtual 函数类型  函数名  (形参表){

函数体

B0::display    B1::display    B2::display

基类构造函数调用虚函数时,不会调用派生类的虚函数;被析构时,对象也不是一个派生类对象了,只调用Base::virt()

需要声明 需析构函数,子类调用析构函数,防止内存泄漏

virtual ~类名()

纯虚函数

virtual 函数类型 函数名( 参数表 ) =0;

基类中不能给出函数的实现部分,函数体由派生类给出。

只说明函数原型用来规定整个类族的统一接口形式,而在派生类中再给出函数的具体实现

抽象类

为一个类族建立一个公共的接口,不能实例化,可以声明一个抽象类的指针和引用

带有纯虚函数的类

原创粉丝点击