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

网站建设与维护高职游戏推广平台有哪些

网站建设与维护高职,游戏推广平台有哪些,怎么只做自己的电商网站,网站的策划做推广前言: 单例模式可以参考如下文章: 我的设计模式,单例模式的设计和实现 c 单例模式的模板类 - 川野散人 - 博客园 1.为什么需要单例模板类? 场景问题: 如果需要100个单例类就需要设计100个单例模式,代…

前言:

单例模式可以参考如下文章:

我的设计模式,单例模式的设计和实现

c++ 单例模式的模板类 - 川野散人 - 博客园

1.为什么需要单例模板类?

场景问题:

如果需要100个单例类就需要设计100个单例模式,代码重复且冗余,不利于扩展。

单例模板类可以实现单例模式的基础功能,普通类继承它之后,就拥有单例的特性。

2.单例模板类需要具备哪些特质?如何设计?

单例模板类需要具备哪些特质?

  • 单例模板类的构造函数应该是protected的?(子类要拥有创建父类的权限,但是不能是pubic,如果是public就丧失单例特性)
  • 单例模板类的析构函数应该是protected的?(子类要拥有析构父类的权限,但是不能是pubic,会重复析构)
  • 单例模板不能使用拷贝构造
  • 单例模板不能使用拷贝赋值
  • 单例模板应提供实例的public方法

设计代码如下:

template<typename T>
class Singleton
{
protected:Singleton(){std::cout << "Singleton()!" << std::endl;}~Singleton(){std::cout << "~Singleton()!" << std::endl;}
public:static T& getInstance(){static std::mutex mtx;static std::unique_ptr<T> uniPtr;if (uniPtr == nullptr){mtx.lock();if (uniPtr == nullptr){uniPtr.reset(new T());}mtx.unlock();}return *uniPtr;}
private:Singleton(const Singleton& s) = delete;Singleton& operator = (const Singleton& s) = delete;
};

继承者应注意哪些?

  • 继承者的构造函数应设为私有
  • 继承者应设置单例模板类为友元(父类可以调用继承者私有构造函数)
class MySingleton :public Singleton<MySingleton>
{friend class Singleton<MySingleton>;
private:MySingleton() {std::cout << "MySingleton()!" << std::endl;}
public://unique_ptr需要权限销毁管理的对象~MySingleton() {std::cout << "~MySingleton()!" << std::endl;}
public:void MySingletonSay(){std::cout << "MySingletonSay : Hello World!" << std::endl;}
};

3.测试代码

int main()
{{MySingleton::getInstance().getInstance().MySingletonSay();}{MySingleton::getInstance().MySingletonSay();}
}

输出:

Singleton()!
MySingleton()!
MySingletonSay : Hello World!
MySingletonSay : Hello World!
~MySingleton()!
~Singleton()!

4.当我设置继承者析构函数为私有时,编译unique_ptr报错

class MySingleton :public Singleton<MySingleton>
{friend class Singleton<MySingleton>;
private:MySingleton() {std::cout << "MySingleton()!" << std::endl;}~MySingleton() {std::cout << "~MySingleton()!" << std::endl;}
public:void MySingletonSay(){std::cout << "MySingletonSay : Hello World!" << std::endl;}
};

5.继承者析构函数不显式声明,编译unique_ptr不报错,但析构不完全

class MySingleton :public Singleton<MySingleton>
{friend class Singleton<MySingleton>;
private:MySingleton() {std::cout << "MySingleton()!" << std::endl;}
public:void MySingletonSay(){std::cout << "MySingletonSay : Hello World!" << std::endl;}
};
  • 输出
Singleton()!
MySingleton()!
MySingletonSay : Hello World!
MySingletonSay : Hello World!
~Singleton()!

6.继承者析构函数声明为public可能出现的问题举例

#include <iostream>
#include <memory>
#include <mutex>template<typename T>
class Singleton
{
protected:Singleton(){std::cout << "Singleton()!" << std::endl;}~Singleton(){std::cout << "~Singleton()!" << std::endl;}
public:static T& getInstance(){static std::mutex mtx;static std::unique_ptr<T> uniPtr;if (uniPtr == nullptr){mtx.lock();if (uniPtr == nullptr){uniPtr.reset(new T());}mtx.unlock();}return *uniPtr;}
private:Singleton(const Singleton& s) = delete;Singleton& operator = (const Singleton& s) = delete;
};class MySingleton :public Singleton<MySingleton>
{friend class Singleton<MySingleton>;
private:MySingleton() {std::cout << "MySingleton()!" << std::endl;}
public://unique_ptr需要权限销毁管理的对象~MySingleton() {std::cout << "~MySingleton()!" << std::endl;}
public:void MySingletonSay(){std::cout << "MySingletonSay : Hello World!" << std::endl;}
};int main()
{{MySingleton::getInstance().MySingletonSay();delete &MySingleton::getInstance();}std::cout << "end...................." << std::endl;
}
  • 输出:出现了重复析构sos
Singleton()!
MySingleton()!
MySingletonSay : Hello World!
~MySingleton()!
~Singleton()!
end....................
~MySingleton()!
~Singleton()!

7.如上的问题怎么解决呢?欢迎观众大佬们留言

http://www.dtcms.com/wzjs/84706.html

相关文章:

  • 商河做网站公司人民日报新闻消息
  • linux做网站网络课堂线上营销课程
  • 站长统计草莓芭乐丝瓜小猪seo自学网站
  • 北京市网站公司网站北京官网seo收费
  • 怎么做网站的谷歌海外广告投放
  • 自己做网站图片存在哪里关键词快速排名软件价格
  • 网站建设一个月做十单线下营销推广方式有哪些
  • 兴义哪有做网站万网
  • 什么是独立域名网站sem推广软件哪家好
  • 萧山好的做网站的公司网店seo排名优化
  • 来年做啥网站能致富软文新闻发布网站
  • 建筑公司排名前100网站seo快速优化技巧
  • 网站空间域名申请网站注册城乡规划师含金量
  • 专业的培训行业网站模板杭州优化建筑设计
  • 办网站流程电商培训有用吗
  • 才艺多网站建设如何做个网站推广自己产品
  • 医院网站管理制度餐饮营销方案100例
  • 做中学学中做网站网站推广是做什么的
  • 成都服务器维护青岛百度快速排名优化
  • java做网站好学么广州最新疫情
  • 聊城网站制作百度推广后台登录首页
  • wordpress需求规划书最新seo操作
  • 公司网站 钓鱼网站巨量算数官方入口
  • 做网站撘框架seo站长
  • 做平台网站需要多少钱百度ai人工智能平台
  • 新网站怎么做seo 风享软件制作平台
  • 品牌网站建设坚持大蝌蚪优化网站视频
  • 个人网页设计步骤直通车关键词优化
  • 国际网站建站可以发外链的论坛有哪些
  • 郑州网站建设搜q.479185700网销怎么找客户资源