面向对象程序设计(基于C++)笔记5.19(关于模板的使用)

多态性通过虚函数表来实现。

但对于一些比如形状这种抽象的类,这种代码是很难实现的。

 class Shape {

  public:

    virtual void rotate(int);

    virtual void draw();

    virtual bool is_closed();

    …

 };

  /* it is difficult to define rotate and draw operations for some general shapes */

 更好的方法是将抽象类的虚函数声明为纯虚函数。 未定义纯虚函数,但使用 =0 表示法来指示它是纯虚拟的。 具有一个或多个纯虚函数的类是抽象类,抽象类是不需要构造函数的,只能作为接口或基类

class Shape {
  public:
    virtual void rotate(int)=0;
    virtual void draw()=0;
    virtual bool is_closed()=0;
    …
 };
 class Point { … };
 class Circle : public Shape {
 public:
   void rotate(int) { }
   void draw();
   bool is_closed(){return true;}
   Circle(Point p,int r);
 private:
   Point Center;
   int radius;
}; 

抽象类旨在作为通过指针和引用访问的对象的接口(以保留多态行为)。 抽象类的一个重要用途是提供接口而不公开任何实现细节


派生类本身可以是基类,通过继承相关的一组类称为类层次结构,这样的层次结构可以用有向无环图(DAG)来表示。

 一个类有不止一个基类的情况就叫做多态继承。


泛型程序设计(C++特点之一)

模板是参数化类型定义。 模板提供了一种简单的方法来表示各种一般概念,并提供了组合它们的简单方法。 模板提供对泛型编程的直接支持,使用类型作为参数。 两种类型的模板: 类模板 函数模板

例子:


什么是函数模板?什么是类模板?

先给大家一个简单的例子

 比如说我们定义队列,队列中存放整数和字符串,我们用的都是最底层的表达方式,数据类型不一样,按照之前学的知识,就要写两个基本性质相同的类,是不是很繁琐?

所以,模板孕育而生,模板支持把类型名作为参数。

泛型程序设计优势就在节省重复代码的编写。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NightHacker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值