抽象类(abstract base class,ABC)就是类里定义了纯虚成员函数的类。纯虚函数一般只提供了接口,并不会做具体实现(虽然可以),实现由它的派生类去重写。抽象类不能被实例化(不能创建对象),通常是作为基类供子类继承,子类中重写虚函数,实现具体的接口。简言之,ABC描述的是至少使用一个纯虚函数的接口,从ABC派生出的类将根据派生类的具体特征,使用常规虚函数来实现这种接口。
抽象基类的理念:在处理继承的问题上,ABC方法更系统性,更规范。设计ABC之前,应先开发一个模型—指出编程问题所需的类以及它们之间的相互关系。一种学院派思想认为,如果要设计类继承层次,则只能将那些不会被用作基类的类设计为具体的类。这种设计方法更清晰,复杂度低。
抽象类只能作为基类来使用.抽象基类必须至少使用一个纯虚函数接口。(纯虚函数可以在抽象类中定义)抽象基类不能创建对象实例.只能当基类被其它类继承。原型中使用=0指出类是一个抽象基类,在类中可以不定义该函数。抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出。如果派生类没有重新定义纯虚函数,而派生类只是继承基类的纯虚函数,则这个派生类仍然还是一个抽象类。如果派生类中给出了基类纯虚函数的实现,则该派生类就不再是抽象类了,它是一个可以建立对象的具体类了.基类的纯虚函数必须有“=0”,但不一定没有函数的实现,只是不能直接内嵌在类中.抽象基类的作用:在处理继承问题上,更系统,更规范,如果要设计类?