1

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

它是正确的方法还是有更合适的 C++ 方法?

谢谢。

4

5 回答 5

3

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

但无论如何,静态类成员绝对是要走的路。

于 2009-03-18T11:58:57.763 回答
2

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

于 2009-03-18T11:53:08.337 回答
1

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

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

于 2009-03-18T11:53:03.673 回答
0

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

如果您有多线程应用程序并且您的查找表包含指向另一个数据的指针,该数据可能比该表更早被销毁,请小心。

于 2009-03-18T11:56:59.937 回答
0

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

于 2009-03-18T12:21:45.990 回答