4.0 C++远征:纯虚函数与抽象类

3-1纯虚函数抽象类

一、纯虚函数

1.纯虚函数的定义

纯虚函数,没有函数体,同时定义时在函数名后要加上“=0”。

class Shape {
  public:
  	virtual double calcArea() {	// 虚函数
      return 0.00;
  	}
  	virtual double calcPerimeter() = 0;	// 纯虚函数  	
}

2.纯虚函数的实现原理

虚函数表指针指向一份虚函数表。

如果定义的是虚函数,在虚函数表中,此函数指针的值存的是虚函数的首地址。

如果定义的是纯虚函数,在虚函数表中,此函数指针的值存的是0。

二、抽象类

1.抽象类

含有纯虚函数的类叫做抽象类。

2.抽象类的用法

​ (1)抽象类无法实例化对象。(无论在堆中还是栈中。)

​ (2)因为纯虚函数无法被调用。

​ (3)当类的用途很明确时,才在派生类中具体去实现基类中定义的纯虚函数。这样在派生类中才能使用。

​ (4)若是派生类并没有对基类中的纯虚函数进行实现,则该派生类仍然是抽象基类。

​ (5)只有将抽象类中所有纯虚函数都做了实现,派生类才可以去实例化对象。

​ (6)抽象基类是本类族的公共接口。例如可通过抽象基类的指针访问到任何子类的虚函数,并对这些函数下达同一命令,从而实现多态性。

原文地址:https://www.cnblogs.com/xiaoqingyang/p/6077544.html