1.抽象类
1.1 什么是抽象类?
带有纯虚函数的类为抽象类
1.2 抽象类的作用?
抽象类的主要作用是将有关的操作作为结果接口组织在一个继承层次结构中,由它来为派生类提供一个公共的根,派生类将具体实现在其基类中作为接口的操作。所以派生类实际上刻画了一组子类的操作接口的通用语义,这些语义也传给子类,子类可以具体实现这些语义,也可以再将这些语义传给自己的子类。
1.3 使用抽象类时注意
-
抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出。
-
如果派生类中没有重新定义纯虚函数,而只是继承基类的纯虚函数,则这个派生类仍然还是一个抽象类。
-
如果派生类中给出了基类纯虚函数的实现,则该派生类就不再是抽象类了,它是一个可以建立对象的具体的类。
-
抽象类是不能定义对象的。
2.抽象基类为什么不能创建对象?
由于抽象类包含了没有定义的纯虚函数,所以不能定义抽象类的对象。
#include<iostream>
using namespace std;
class base {
public:
base() {}
/*virtual void print() {
cout << "base print" << endl;
}*/
virtual void print() = 0;
void p() {
cout << "base p" << endl;
}
virtual ~base() {}
};
class derived :public base{
public:
derived(){}
virtual void print() {
cout << "derived function" << endl;
}
~derived(){}
};
int main()
{
base b;//错误,base作为抽象类,不能定义对象
b.p();
return 0;
}