查找表应该是静态的

时间:2009-03-18 11:48:47

标签: c++ static members

我有一个Message类,它使用查找表解析文本消息。我收到很多消息并创建和销毁很多对象,所以我认为我将这些查找表声明为静态成员,以防止一次又一次地使用相同的值初始化相同的表。

这是正确的方法还是更合适的C ++方式?

感谢。

5 个答案:

答案 0 :(得分:3)

如果您的消息类共享查找信息,则可能需要将静态查找抽象为自己的类,以便它们实际上只被初始化一次。

但无论如何,静态班级成员肯定是要走的路。

答案 1 :(得分:2)

它们可以是类变量,即类级别的静态变量。这样,它们可用于子类(如果有的话),并且可能比在各个方法中“隐藏”为静态局部变量时更明显。

答案 2 :(得分:1)

这听起来是正确的方法,虽然我希望编译器能够优化它。您是否对应用程序进行了基准测试,并将表格声明为静态加速?

另请注意,如果您有许多大型查找表,性能会提高,但表格会一直保留在内存中。

答案 3 :(得分:0)

是的,一切都好。有时这是一个很好的解决方案:函数static只会创建一次。您也可以使用单例对象,但它具有更广泛的可访问性。

如果您有多线程应用程序并且查找表包含指向可能在此表之前销毁的其他数据的指针,请小心。

答案 4 :(得分:0)

使用单例模式也适用于此。