荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Dreamer (我与萤火虫), 信区: SoftDev
标  题: 【C++】[FAQ]为何成员函数不是默认为虚?
发信站: 荔园晨风BBS站 (Tue Jun  8 13:16:09 2004), 站内信件

Q: 为何成员函数不是默认为虚?
A: 因为许多类不是被用来做基类的。[译注:用来做基类的类常类似于其它语言中
的interface概念——它们的作用是为一组类定义一个公共介面。但C++中的类显然
还有许多其他用途——比如表示一个具体的扩展类型。] 例如,复数类就是如此。

另外,有虚函数的类有虚机制的开销[译注:指存放vtable带来的空间开销和通过
vtable中的指针间接调用带来的时间开销],通常而言每个对象增加的空间开销是
一个字长。这个开销可不小,而且会造成和其他语言(比如C,Fortran)的不兼容
性——有虚函数的类的内存数据布局和普通的类是很不一样的。[译注:这种内存
数据布局的兼容性问题会给多语言混合编程带来麻烦。]

《The Design and Evolution of C++》 中有更多关于设计理念的细节。



--
如果你真的爱萤火虫,你就不应该将她困在瓶子里;
如果你真的爱萤火虫,你应该放开她,让她在天空中自由自在地飞!
虽然你会不舍得她,但是最终你就会明白这样你才真正拥有了她!

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.0.223]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店