2018-01-28 高级多态(一)

2018-01-28  本文已影响0人  辣么大大大大

纯虚函数

纯虚函数是必须在派生类中重写的虚函数。通过将虚函数初始化为0来将其声明为纯虚的。
派生类重写所有虚函数,否则它也是ADT。

virtual void draw() = 0;
class Shape
{
public:
    Shape() {}
    virtual ~Shape() {}
    virtual long getArea() = 0;
    virtual long getPerim()= 0;
    virtual void draw() = 0;
private:
};

虚函数

  1. 使用虚成员函数实现多态。
  2. 虚成员函数的工作原理
    编译器创建虚成员函数表v-table。根据vptr指针指向的实际对象类型调用正确的函数。
  3. 不能通过基类指针访问派生类特有的方法。
  4. 虚析构函数
    如果一个函数是虚成员函数,那么析构函数也应该是虚成员函数。
  5. 使用虚成员函数的代价
    维护v-table会带来一些开销。
上一篇下一篇

猜你喜欢

热点阅读