gpt4 book ai didi

c++ - 在 main() 之前可能需要做什么样的操作

转载 作者:IT老高 更新时间:2023-10-28 21:56:14 25 4
gpt4 key购买 nike

我遇到了this question询问如何在 C 中的 main() 之前执行代码,提到 C++ 有策略。我大部分时间都生活在应用程序空间中,因此我从未想过在 main() 之前执行。什么样的事情需要这种技术?

最佳答案

“什么样的事情需要这种技术?”

事实:无。

但是,由于各种原因,您可能希望在 main 之前做很多有用的事情。举一个实际的例子,假设你有一个构建 doohickies 的抽象工厂。您可以确保构建工厂实例,将其分配到某个特殊区域,然后将各种具体的 doohickies 注册到它...是的,您可以这样做。

另一方面,如果您将工厂实现为单例,并使用全局值初始化的事实来“欺骗”实现在 main 启动之前注册具体的 doohickies,您可以获得几个好处而成本非常低(使用单例,在这里基本上不是问题,几乎是唯一的)。

例如你:

  1. 不必维护所有必须显式调用的注册列表。事实上,您甚至可以在私有(private)范围内声明和定义整个类,在任何人都看不见的情况下,并使其在程序启动时可供使用。

  2. main() 不必对一堆它不关心的对象做一堆废话。

所以,这些实际上都不是必要的。但是,如果您利用全局变量在 main 开始之前初始化的事实,则可以减少耦合和维护问题。

编辑:

在此应注意,我已经了解到语言无法保证这一点。 C++ 只保证 zeroconstant 初始化发生在 main 之前。我在这个答案中谈论的是 dynamic 初始化。这种 C++ 保证发生在第一次使用变量之前,很像函数局部静态变量。

每个编译器似乎都在 main 之前进行动态初始化。我以为我遇到过一次,但我相信问题的根源是别的。

关于c++ - 在 main() 之前可能需要做什么样的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4881042/

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