抽象类&纯虚函数

如果一个类只能被用做基类,它就是一个抽象类。“protected ”用于构造函数来的目的是:保证我们不能直接创建其对象,其只有它的派生类可以直接使用。

class B{
public:
virtual void f() = 0;
virtual void g() = 0;
}

B b; //error B  is abstrac

virtual void f() = 0; 是一个纯虚函数,它必须在派生类中被覆盖. 注意,除非所有纯虚函数都被覆盖了,否则该派生类也是抽象的。

class D2:public B{
public:
void f();
};
D2 d2; //errror:D2 is abstract

class D3 : public D2{
public:
           void g();
};

D3 d3;   //ok

通常,带有纯虚函数的类的目标是提供纯粹的接口,即它们倾向于不包含任何数据成员。因此没有任何构造函数。

posted @ 2011-09-14 20:14  jc24  Views(161)  Comments(0)    收藏  举报