码迷,mamicode.com
首页 > 其他好文 > 详细

纯虚函数

时间:2014-10-14 22:39:39      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:纯虚函数   多态   

正常情况下纯虚函数类似于java中的抽象函数,只提供接口,不提供定义,由不同的子类提供不同的实现,从而表现出多态。但是也有两个特殊的情况。

情况一:纯虚函数也是可以有实现体的,只是由于不能建立基类的对象,因此不能直接调用,但是可以在子类中通过作用域解析操作符静态调用,因此可以在里面添加一些公共的代码,例如:

class Base
{
	public:
		virtual void fun1()=0;
};
void Base::fun1()
{
	cout << "Base::fun1"<<endl;
}
class Derived : public Base
{
	public:
		virtual void fun1()
		{
			Base::fun1();//静态调用
			cout << "Derived::fun1"<<endl;
		}
};
int main()
{
	Base* pb= new Derived;
	pb -> fun1();
	delete pb;
}


情况二:对于纯虚析构函数,它和普通的纯虚函数不同的地方在于它必须要提供实现体,这样的原因在于,纯虚析构函数最终需要被调用,以析构基类对象,如果不提供该析构函数的实现,将使得在析构过程中,析构无法完成而导致析构异常的问题,从而在链接阶段发生错误,所以,好的实现方案就是不要把虚析构函数设置为纯虚的





纯虚函数

标签:纯虚函数   多态   

原文地址:http://blog.csdn.net/fangjian1204/article/details/40083491

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!