gpt4 book ai didi

C++ 单例与全局静态对象

转载 作者:IT老高 更新时间:2023-10-28 13:58:49 26 4
gpt4 key购买 nike

今天我的一个 friend 问我为什么他更喜欢使用单例而不是全局静态对象?我开始解释的方式是单例可以有状态与静态全局对象不会......但后来我不确定......因为这在 C++ 中......(我来自 C#)

两者相比有什么优势? (在 C++ 中)

最佳答案

实际上,在 C++ 中,首选方式是本地静态对象。

Printer & thePrinter() {
static Printer printer;
return printer;
}

虽然这在技术上是一个单例,但这个函数甚至可以是一个类的静态方法。因此,与全局静态对象不同,它保证在使用前先构建,可以按任何顺序创建,当一个全局对象使用另一个全局对象时,可能会出现不一致的失败,这是很常见的场景。

通过调用 new 来创建新实例的普通方法比普通的单例方法更好的是对象析构函数将在程序结束时调用。动态分配的单例不会发生这种情况。

另一个积极的方面是在创建单例之前无法访问它,即使从其他静态方法或子类也是如此。为您节省一些调试时间。

关于C++ 单例与全局静态对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1463707/

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