gpt4 book ai didi

c++ - C++ 中的静态成员函数

转载 作者:行者123 更新时间:2023-11-30 02:42:06 24 4
gpt4 key购买 nike

我正在研究 C++ 的一个示例,用于克隆对象。

#ifndef CLIPBOARDSTACK_H
#define CLIPBOARDSTACK_H

#include <QStack>

#include "getEntity.h"

class clipboardStack
{
public:
static clipboardStack *instance()
{
if (!inst)
inst = new clipboardStack;

return inst;
}

void push(getEntity *entity)
{
clips.push(entity);
}

getEntity *pasteEntity()
{
if (clips.count() == 0)
return 0;

return clips.last();
}

getEntity *pop()
{
if (clips.count() == 0)
return 0;

return clips.pop();
}

bool isEmpty() const
{
return clips.empty();
}

private:
QStack<getEntity *> clips;
static clipboardStack *inst;
};

#endif // CLIPBOARDSTACK_H

getEntity 在哪里:

#ifndef GETENTITY_H
#define GETENTITY_H

#include <QGraphicsItem>


class getEntity : public QObject, public QGraphicsItem
{
public:
getEntity(QObject *parent = 0) : QObject(parent) {}
virtual ~getEntity() {}

virtual getEntity *clone()
{
return 0;
}


};

#endif // GENTITY_H

但我无法理解这行代码的确切含​​义。

这行是什么意思:

static clipboardStack *instance()
{
if (!inst)
inst = new clipboardStack;




return inst;

}

谁能解释一下上面那行到底做了什么,以及这两个类的简要说明?

最佳答案

static clipboardStack *instance()
{
if (!inst)
inst = new clipboardStack;




return inst;

}

这是单例模式的代码。如果没有类 clipboardStack 的实例,那么它会创建它,否则它会返回已经创建的实例。

注意:- 这种单例实现不是线程安全的。

关于c++ - C++ 中的静态成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27425353/

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