纯虚函数不能生成对象

虚函数是 一种特殊的虚函数,它的一般格式如下:   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()一样,只是在基类中不需要写函数实现.

转载于:https://www.cnblogs.com/charlexu/archive/2013/01/10/2854264.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值