基类中static定义的函数能否为虚函数为什么

[复制链接]
查看11 | 回复3 | 2011-12-19 22:34:38 | 显示全部楼层 |阅读模式
不能。虚函数是为了实现多态而提出的概念,多态就是用子类的对象指针调用函数时是调用子类函数还是调用基类函数,当基类中的函数定义为虚函数时,再用子类中的对象指针调用时,就调用的是子类函数。static定义的函数是属于类的,无法用对象或对象指针来调用,也就不存在多态的概念,因而静态函数若定义为虚函数就是非法的。...
回复

使用道具 举报

千问 | 2011-12-19 22:34:38 | 显示全部楼层
不能。成员函数不可同时为virtual和static。 多态实现的基本原理是每个带有virtual函数的类的【实例】要包含一个指针,指向虚函数表(vtbl)。static函数做为类函数,不与任何【实例】相关,自然无法实现多态了。...
回复

使用道具 举报

千问 | 2011-12-19 22:34:38 | 显示全部楼层
不能为虚函数,类只是限定了静态函数的可见性,基类和派生类共享一个静态函数,无法被重载和改写。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行