参考The C++ programming language
抽象类(abstract class):
A virtual function is ‘‘made pure’’ by the initializer = 0 :
纯虚函数通过函数形参表后添加=0来表明该函数是纯虚函数
比如
class Vehicle{
public:
virtual void run()=0;
};
run方法便是纯虚函数
包含一个或多个纯虚函数的类就是抽象类
不能创建抽象类的对象。抽象类的对象无法作为函数参数与返回类型,但是可以使用抽象类的指针或者引用
A pure virtual function that is not defined in a derived class remains a pure virtual function, so the
derived class is also an abstract class. This allows us to build implementations in stages:
在派生类中未定义的纯虚函数仍旧为纯虚函数,这样派生类也是抽象类
若抽象类的派生类未定义基类中的纯虚函数,那么该函数在派生类中还是纯虚函数。该派生类为抽象类
比如下面的代码段
class Vehicle{
public:
virtual void run()=0;
};
class Car:public Vehicle{
private :
int speed;
int price;
};
int main(){
Car c; //illegal,Car is an abstract class
public:
virtual void run()=0;
};
class Car:public Vehicle{
private :
int speed;
int price;
};
int main(){
Car c; //illegal,Car is an abstract class
}
Car 派生自抽象类vehicle,但未重写抽象类中的纯虚函数,因此Car也是抽象类