程序设计——类的继承+多态内容总结

继承

一、定义

在这里插入图片描述

二、语法形式

在这里插入图片描述
在这里插入图片描述

注:

在这里插入图片描述

三、派生类

在这里插入图片描述

重名成员

在这里插入图片描述
例:

class  base
  { public :
           int  a ,  b ;  
  } ;
class  derived : public  base
  { public :  
         int  b ,  c ; 
  } ;
void  f ()
{ derived  d ;
   d . a = 1 ;
   d . base :: b = 2 ;
   d . b = 3 ;
   d . c = 4 ;
};
访问静态成员

在这里插入图片描述

派生类构造函数和析构函数的定义规则

在这里插入图片描述

派生类构造函数定义

在这里插入图片描述

派生类析构函数

在这里插入图片描述

四、多继承

在这里插入图片描述

多继承构造函数

在这里插入图片描述

五、虚基类

在这里插入图片描述

例:
class  B  { public : int  b ;} ;
class  B1 : virtual  public  B { private : int  b1 ; } ;
class  B2 : virtual  public  B { private : int  b2 ; } ;
class  C : public  B1 , public  B2 { private : float  d ; } ;
六、赋值兼容规则在这里插入图片描述
应用

在这里插入图片描述

特点:

在这里插入图片描述

多态

一、定义

在这里插入图片描述

二、实现

多态从实现的角度来讲可以划分为两类:编译时的多态和运行时的多态。
编译时的多态是通过静态联编来实现的,静态联编就是在编译阶段完成的联编。编译时多态性主要是通过函数重载和运算符重载实现的。
运行时的多态是用动态联编实现的。动态联编是运行阶段完成的联编。运行时多态性主要是通过虚函数来实现的。

三、静态联编
普通成员函数重载:

在这里插入图片描述
三种编译方式:
在这里插入图片描述

类指针关系

在这里插入图片描述

注:

在这里插入图片描述

四、虚函数

在这里插入图片描述

实现动态联编的前提

在这里插入图片描述

虚函数和动态联编

在这里插入图片描述

注:

在这里插入图片描述

虚函数重载特性

在这里插入图片描述

说明:

在这里插入图片描述

五、纯虚函数和抽象类

在这里插入图片描述

例1:
class  point { /*……*/ } ;
class  shape// 抽象类
{ point  center ;
      ……
  public :
    point  where ( ) { return  center ; }
    void  move ( point p ) {center = p ; draw ( ) ; }
    virtual  void  rotate ( int ) = 0 ; 		// 纯虚函数
    virtual  void  draw ( ) = 0 ;			// 纯虚函数
} ;...
  shape  x ;			// error,抽象类不能建立对象
  shape  *p ;		// ok,可以声明抽象类的指针
  shape  f ( ) ;		// error, 抽象类不能作为函数返回类型
  void  g ( shape ) ;		// error, 抽象类不能作为传值参数类型
  shape  & h ( shape &) ;	// ok,可以声明抽象类的引用
例2:
class figure
{ 
protected : 
   double x,y;
 public:    
    void set_dim(double i, double j=0) { x = i ;  y = j ; }
    virtual void show_area() = 0 ;
};

class triangle : public figure
{ public :
    void show_area()
     { cout<<"Triangle with high "<<x<<" and base "<<y <<" has an area of "<<x*0.5*y<<"\n"; }
};

class square : public figure
{ public:
      void show_area()
     { cout<<"Square with dimension "<<x<<"*"<<y <<" has an area of "<<x*y<<"\n"; }
};
class circle : public figure
{ public:
    void show_area()
    { cout<<"Circle with radius "<<x;
      cout<<" has an area of "<<3.14*x*x<<"\n";}
};
虚函数与多态应用

在这里插入图片描述

心得感受

随着学的东西越来越多哦还有难度越来越大,很多地方感觉掌握的都也不是特别好,比如向量和重载运载符和文件读写这一块。
快到期末了,很多课都要开始复习了,还有很多作业和笔记要补。但是却没什么动力,上课的状态也不是特别好,还是要多注意,多调整自己,把心思多放在学习上面。
自己的编程能力其实算是比较弱的,平时作业花费的时间也比较长,所以比较担心课程设计,还有最后的期末考试。感觉自己还是得多加强这些方面,多学多练。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值