设为首页 加入收藏

TOP

C++ 虚函数与纯虚函数
2014-11-24 07:34:53 来源: 作者: 【 】 浏览:0
Tags:函数

今天讲讲C++中,虚函数与纯虚函数的用法和区别。


而纯虚函数是一种特殊的函数,它的作用是在基类中不给出有意义的实现,而把说明成纯虚函数,它的实现留给该基类的派生类去做。包含纯虚函数的类就是抽象类,抽象类不能被实例化,但是可以定义指向抽象类数据的指针变量,当派生类称为具体类后,就可以用这种指针指向派生类的对象,然后通过该指针调用虚函数,实现多态操作。


虚函数和纯虚函数的书写格式类似于下面:


class Student


{


virtual char * test(); //虚函数


virtual char * Category() =0; //纯虚函数


};


虚函数可以被直接调用,也可以备子类重载以后以多态的形式调用,而纯虚函数必须在子类中实现该函数才可以使用,因为纯虚函数在基类只有声明而没有定义。


虚函数和纯虚函数的定义中不能有static 标识符,原因很简单,被static修饰的函数在编译时候要求前期绑定,然而虚函数确实动态绑定,而且被两者修饰的函数生命周期也不一样。


如果一个类中含有纯虚函数,那么任何试图对该类进行实例化的语句都将导致错误的产生,因为抽象基类不能被直接调用,必须呗子类集成重载以后,根据要求调用其子类的方法。


class StudentA
{
public:
virtual void funOne() = 0; // 说明fun函数为纯虚函数
virtual void funTwo();
};


class StudentB
{
public:
virtual void funOne();
virtual void funTwo();
};


// CA,CB类的实现
...


void main()
{
StudentA xiaoliu; // 不允许,因为类CA中有纯虚函数
StudentB xiaoxin; // 可以,因为类CB中没有纯虚函数
...
}


本文简要介绍了虚函数和纯虚函数,并对它们做了简要区分。简单来说,虚函数是为了多重继承的二义性问题而提出的解决方案,纯虚函数的提出是使一些类的实例化更加符合逻辑,便于实现多态。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java Filter的执行顺序 下一篇C++虚基类解决二义性问题及执行结..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Redis 分布式锁全解 (2025-12-25 17:19:51)
·SpringBoot 整合 Red (2025-12-25 17:19:48)
·MongoDB 索引 - 菜鸟 (2025-12-25 17:19:45)
·What Is Linux (2025-12-25 16:57:17)
·Linux小白必备:超全 (2025-12-25 16:57:14)