小编SBB*_*BBG的帖子

C ++单例和新运算符

嗨,我有一个代码片段,它是一个单例类(我相信),它以以前从未见过的方式使用'new'和其他一些作用域和静态限定符。因为我不知道它叫什么,所以找不到有关它的用途或目的的任何信息。代码如下:

在myClass.h文件中

class myClass
{
private:
    static myClass sm_myClass;
    myClass();
public:
    static void Create(void);
};
Run Code Online (Sandbox Code Playgroud)

在myClass.cpp中,我有

#include "myClass.h"
#include <new>

myClass* p_myClass = NULL;

myClass myClass::sm_myClass;

myClass::myClass()
{
}

void myClass::Create(void)
{
    p_myClass = &sm_myClass;

    new (p_myClass) myClass();
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:

1-.cpp文件的第6行(myClass myClass :: sm_myClass;)发生了什么

2-.cpp文件的第16行(new(p_myClass)myClass();)发生了什么

3-以这种方式使用类的总体目的是什么?

我真的希望这个问题不再重复。我搜索了一段时间,但不知道要搜索什么词。谢谢你的帮助。

c++ singleton scope class

1
推荐指数
1
解决办法
461
查看次数

标签 统计

c++ ×1

class ×1

scope ×1

singleton ×1