gpt4 book ai didi

c++ - 在类中使用静态成员对象有什么问题?

转载 作者:可可西里 更新时间:2023-11-01 18:16:38 25 4
gpt4 key购买 nike

我听说使用静态成员对象不是一个很好的做法。

例如,我有这段代码:

class Foo {
...
static MyString str;
};

我在这个类的实现文件中定义并初始化这个变量为:

MyString Foo::str = "Some String"; // This is fine as my string API handles this.

当我运行这段代码时,我收到警告:

warning:'Foo::str' requires global construction.

我类有很多这样的成员,最好的处理方法是什么。

谢谢,

最佳答案

大多数反对它们的论点与全局变量相同:

  1. 不同编译单元之间的初始化顺序未定义。
  2. 一个编译单元内的初始化顺序可能会影响行为——因此可能需要非平凡的顺序。
  3. 如果构造函数抛出一个您无法捕获的异常,您的程序就会终止。

附加:要正确处理此问题,您必须确保以上几点不适用于您的代码并忽略警告,或者重新设计您的程序:您真的需要静态的吗?为什么不使用 const char* Foo::str = "Some String";

关于c++ - 在类中使用静态成员对象有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3821618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com