使用虚函数节省内存

 

在一个类层次中,如果最顶层基类需要定义某个属性,最一般的方法就是在顶层的类中定义

一个数据成员来存储该属性的值,然后在顶层基类中定义一个非虚方法访问该属性的值。

但是如果对象的数量非常多时,这种方式会造成一定的内存开销。

 

有一种特殊的情况:一个对象的某个属性的值完全由其所属的类决定。在这种情况下,可以

在顶层基类定义一个虚方法,然后在某些子类中覆盖该方法。在这些虚方法中都根据所在

的类返回相应的常值。

 

例如在WebKit的DOM类层次中,有Node,ContainerNode,Element,Document等各种类,Node类有一个属性,

即该Node对象是否是Element。这时可以在Node中定义一个返回false的virtual method,

然后在Element中override该方法,并返回true。

 

 

这种方法的缺点是访问速度慢,无法内联。不过如果这个属性的访问次数很少,该方法还是很有价值的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值