当前位置: 首页 > news >正文

设计素材网站无版权wordpress记账

设计素材网站无版权,wordpress记账,公众号平台app,1688做网站多少钱单例的定义 官方定义:单例是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。 单例的写法 抓住3点: 构造函数私有化(确保只有一个实例)提供一个可以获取构造实例的接口(提供唯一的实…

单例的定义

官方定义:单例是指确保一个类在任何情况下都绝对只有一个实例并提供一个全局访问点。

单例的写法

抓住3点:

  • 构造函数私有化(确保只有一个实例)
  • 提供一个可以获取构造实例的接口(提供唯一的实例)
  • 正常写你需要实现的函数

 举个例子

①就是构造函数私有化,把构造函数放在private

②就是提供一个可以获取实例的接口,这个实例就是私有变量_singleton

③就是正常需要实现的函数,正常咋写就咋写,但最好是独立的且需要多次被使用

用法

在需要使用单例的文件中添加单例的头文件

举个例子,我要在BlockFileTreeView中使用单例中的函数,那么我就在BlockFileTreeView.cpp中添加单例头文件

#include "ResourceTreeViewSingleton.h"

然后再需要调用函数的地方通过单例的init获取实例,然后调用需要使用的函数

filePath = _fileLocalPath + ResourceTreeViewSingleton::init()->getRelativePath(_currentProcessItem,"");
重点就是这句ResourceTreeViewSingleton::init()->getRelativePath(_currentProcessItem,"");

红色部分是获取单例的实例,黄色部分就是调用单例的函数。

单例代码

.h

#ifndef RESOURCETREEVIEWSINGLETON_H
#define RESOURCETREEVIEWSINGLETON_H#include <QSharedPointer>
#include <QMutex>
#include <QStandardItem>
#include <QFileInfo>
class ResourceTreeViewSingleton: public QObject
{Q_OBJECT
public:~ResourceTreeViewSingleton() override;static QSharedPointer<ResourceTreeViewSingleton>& init();static void doDeleteLater(ResourceTreeViewSingleton *obj);static void releaseThis();// 单例类中需要实现的函数bool isDirVisible(QString text);QString changeUnit(const qint64 &size);QString changeQStringSize(const QString &size);bool isFile(QStandardItem * item);QString getRelativePath(QStandardItem *item, QString relativePath);QList<QStandardItem *> queryStandardItem(QStandardItem *topItem);QList<QStandardItem *> queryStandardItemPush(QStandardItem *topItem);bool saveFile(const QString &filePath, const QString &text);QString getDefaultDeviceName(const QStandardItem *item, const QFileInfo &fileInfo);
private:explicit ResourceTreeViewSingleton(QObject *parent = nullptr);static QSharedPointer<ResourceTreeViewSingleton > _singleton;static QMutex _mutex;
};#endif // RESOURCETREEVIEWSINGLETON_H

.cpp

#include "ResourceTreeViewSingleton.h"
#include <QMutexLocker>
#include <QStandardItem>
QMutex ResourceTreeViewSingleton::_mutex;
QSharedPointer<ResourceTreeViewSingleton> ResourceTreeViewSingleton::_singleton;ResourceTreeViewSingleton::ResourceTreeViewSingleton(QObject *parent): QObject(parent)
{}ResourceTreeViewSingleton::~ResourceTreeViewSingleton()
{}void ResourceTreeViewSingleton::doDeleteLater(ResourceTreeViewSingleton *obj)
{obj->deleteLater();
}
void ResourceTreeViewSingleton::releaseThis()
{_singleton.clear();
}QSharedPointer<ResourceTreeViewSingleton> &ResourceTreeViewSingleton::init()
{//初始化决定了它所在的线程if (_singleton.isNull()){QMutexLocker mutexLocker(&_mutex);if (_singleton.isNull()){//发现 doDeleteLater 会崩溃_singleton = QSharedPointer<ResourceTreeViewSingleton>(new ResourceTreeViewSingleton()/*,doDeleteLater*/);}}return _singleton;
}//下面写需要实现的正常函数

http://www.yayakq.cn/news/246597/

相关文章:

  • 公需道德与能力建设培训网站四川微信网站建设公
  • 做外贸soho 需要有网站吗品牌营销公司
  • 建设网站需要申请报告一键生成动漫视频的软件
  • 网站上面的logo怎么做网站备案 法人代表
  • vip影院自助建站系统wordpress 站内信 群发
  • 网站成品超市泉州网站建设技术托管
  • 国内做的好看的网站设计网站建设及维护专业
  • 国外免费做网站软件汉沽天津网站建设
  • 外贸网站排行榜前十名常用的网站建设程序有哪些
  • 手机高端网站建设怎么登陆 wordpress
  • 网站备案幕布照片尺寸网页设计大赛策划案
  • 网站导出链接查询建站新体验
  • 被邀请做刷客会不会碰到钓鱼网站网络营销有什么用
  • 郑州网站建设出名吗?现在主流网站用什么做的
  • 河南送变电建设有限公司网站seo网站推广的主要目的包括
  • 福田网站 建设seo信科asp+php+mysql+aspx环境搭建与6种网站安装2
  • 反馈网站制作太原的网站搭建公司
  • 天津去山西高铁做哪个网站网站建设必要性和意义
  • 创建网站需要多少资金seo外链发布软件
  • 响应式网站 尺寸资源站 wordpress
  • 中国企业网站10套免费ppt模板
  • 做网站说什么5.0啥意思淘宝官网首页电脑版手机登录
  • 建设部资质上报系统网站wordpress 删除线
  • ftp怎么修改网站大学科技园东区 做网站
  • 怎么到百度做网站wordpress 实用插件
  • 第二章营销型网站建设测验wordpress 504
  • 重庆江北营销型网站建设公司哪家好珠海移动互联网开发
  • 企业文化简介网站怎么做wordpress 首页设计
  • 建设企业网站就等于开展网络营销网站举报官网
  • 一人开公司做网站创业中山网上办事大厅