纯虚函数不能生成对象

虚函数是 一种特殊的虚函数,它的一般格式如下:   class <类名>   {   virtual <类型><函数名>(<参数表>)=0;   …   };   在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去 做。这就是纯虚函数的作用。   纯虚函数可以让类先具有一个操作名称,而没有操作内容,让派生类在继承时再去具体地给出定义。 凡是含有纯虚函数的类叫做抽象类。这种类不能声明对象,只是作为基类为派生类服务。除非在派生类中完全实现基类中所有的的纯虚函数,否则,派生类也变成了 抽象类,不能实例化对象

 程序举例:   
基类:   
class A  
 {   
public:   
A();   
virtual ~A();   
void f1();   
virtual void f2();   
virtual void f3()=0;  
 };   
子类:   
class B : public A   
{   
public:   
B();   
virtual ~B();   
void f1();   
virtual void f2();   
virtual void f3();   
};   
主函数:   
int main(int argc, char* argv[])   
{   
A *m_j=new B();   
m_j->f1();   
m_j->f2();   
m_j->f3();   
delete m_j;   
return 0;   
}   
f1()是一个隐藏,关于函数的隐藏,可以参考其它词条.   
调用m_j->f1();会去调用A类中的f1(),它是在我们写好代码的时候就会定好的.   
也就是根据它是由A类定义的,这样就调用这个类的函数.   
f2()是重写(覆盖).   
调用m_j->f2();会调用m_j中到底保存的对象中,对应的这个函数.这是由于new的B   
对象.(调用派生类的f2())   
f3()与f2()一样,只是在基类中不需要写函数实现.

posted @ 2013-01-10 10:55  三句对白  阅读(232)  评论(0编辑  收藏  举报