【发布时间】:2009-01-28 02:18:08
【问题描述】:
背景
我正在开发一个语音转换器程序,它将英文文本转换为等效的区域语言文本。区域语言的字符数将多于英文字母,并且区域语言字体使用字体中的几乎所有位置 (1-255)。
我的程序支持不同的字体,我创建了一个字体类,它有方法可以访问字符。这个类将有 255 个方法,每个方法代表每个字符。所有这些都被标记为 virtual 以便新字体可以覆盖必要的字符方法。
这个字体类中的方法很简单。所有方法都是单行的。示例是
string StandardFont::consonant1(){
return "a";
}
string StandardFont::consonant2(){
return "b";
}
..
问题
- 单个类中的 255 个虚拟函数会产生任何性能问题吗?我知道 vtable 的东西,但我不确定它在这种情况下有多大影响。
- 谁能建议这个类的替代设计?主要设计目标是允许派生类覆盖必要的方法。我曾考虑将字符添加到 map 或 vector 等容器中,并提供获取字符的方法。但是由于我将有 255 个项目并且经常使用这个类,所以我认为每次我必须循环容器来获取角色,这又是一个问题。
有什么想法吗?
【问题讨论】:
-
你能详细说明一下吗?这 255 种方法实际上会做什么?什么代码会调用它们?
标签: c++ virtual-functions