C 单例示例
在 C 中,单例模式确保类在程序执行过程中只有一个实例。这是单例实现的改进示例:
<code class="cpp">class A { private: static A* m_pA; explicit A(); // Constructor should be private A(const A&) = delete; // Prevent copying A& operator=(const A&) = delete; // Prevent assignment virtual ~A(); // Destructor public: static A& GetInstance(); // Return a reference to the instance static void FreeInstance(); // Free the instance when no longer needed void WORK1(); void WORK2(); void WORK3(); }; A& A::GetInstance() { if (m_pA == nullptr) { static A instance; // Lazy initialization m_pA = &instance; } return *m_pA; // Return a reference to the instance } void A::FreeInstance() { delete m_pA; m_pA = nullptr; }</code>
讨论:
为什么避免返回指针?
提供的示例代码最初返回一个指向 Singleton 实例的指针。然而,返回引用被认为更适合单例,因为它可以防止手动释放实例。对象的生命周期应该由 Singleton 类本身管理。
延迟初始化:
改进的示例使用由函数方法初始化的静态变量来实现延迟初始化。这种技术确保 Singleton 仅在需要时才创建,提高了效率。
保证销毁:
通过返回引用,Singleton 确保实例是没有被过早地破坏。当程序退出时,它还负责适当的销毁,因为对单例的引用会自动释放。
附加说明:
以上是为什么 C 单例实现首选返回引用?的详细内容。更多信息请关注PHP中文网其他相关文章!