gpt4 book ai didi

c++ - 构造函数中的静态变量,有什么缺点或副作用吗?

转载 作者:太空狗 更新时间:2023-10-29 19:50:20 25 4
gpt4 key购买 nike

我想做的是:每当要在程序中使用该类的实例时,运行一些先决条件代码。此代码将检查需求等,并且应该只运行一次。

我发现这可以在构造函数中使用另一个对象作为静态变量来实现。这是一个更好的图片示例:

class Prerequisites
{
public:
Prerequisites() {
std::cout << "checking requirements of C, ";
std::cout << "registering C in dictionary, etc." << std::endl;
}
};


class C
{
public:
C() {
static Prerequisites prerequisites;
std::cout << "normal initialization of C object" << std::endl;
}
};

令我困扰的是,到目前为止我还没有看到静态变量的类似用法。是否有任何缺点或副作用,或者我遗漏了什么?或者也许有更好的解决方案?欢迎提出任何建议。

最佳答案

这不是线程安全的,因为如果两个线程同时尝试第一次构造 C,则先决条件可能会被初始化两次。

如果您对此表示满意,您或许可以这样做,尽管玩弄作用域构造函数系统的可发现性为零(即,一旦您忘记了“技巧”或其他人试图阅读您的代码,他们会感到困惑这是怎么回事)。

关于c++ - 构造函数中的静态变量,有什么缺点或副作用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2936910/

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