永发信息网

c++单例和静态的区别

答案:1  悬赏:0  手机版
解决时间 2021-01-22 04:38
  • 提问者网友:留有余香
  • 2021-01-21 13:36
c++单例和静态的区别
最佳答案
  • 五星知识达人网友:一袍清酒付
  • 2021-01-21 14:50
C++单例的实现方式有两种,其中一种方式就是使用静态对象。因为静态对象全局只有一份。另一种方式是使用动态内存实现的单例。

静态对象不一定是单例,因为单例在全局任何地方都可以访问到,只要你包含对应头文件。静态对象可能是私有的,而且静态对象的职责本身就不是单例,因为静态对象可能本身就是因为类型设计的需要而创建。也就是说静态单例和静态对象的访问方式不同,职责不同,定位不同。

静态对象作为单例的实现方式有一定的风险,因为静态单例可能会有多个,而且他们之间可能会互相需要。这个时候你可能会遇到的情况就是某个单例无法创建,因为它依赖的单例还没有被创建。也就是说静态单例的创建顺序是无法像动态内存那样准确控制的。主要是因为C++没有对main函数运行之前的静态对象创建次序有语言上的约束。而静态对象的创建都是发生在main函数执行之前的编译链接阶段,和C++没有关系,只和编译器相关。

希望对你有帮助
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯