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

网站建设与维护高职关键词排名查询工具有哪些

网站建设与维护高职,关键词排名查询工具有哪些,有实力seo优化费用,dedecms模板站源码前言: 单例模式可以参考如下文章: 我的设计模式,单例模式的设计和实现 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/164151.html

相关文章:

  • 如何下载免费直播软件网站seo查询
  • 模拟手机营销网站公司网站如何seo
  • app开发与网站建设难度株洲seo优化推荐
  • 广州网站设计费用跨境网站建站
  • 广告设计公司哪家好seo推广岗位职责
  • 营销型网站建设sempkseo关键词排名怎么提升
  • 番禺做网站的百度网页版官网
  • 电商网站制作公司网址导航该如何推广
  • 化妆品营销推广方案seo优化关键词是什么意思
  • 网站关键词优化办法推广资源整合平台
  • 网站的网络营销推广方案自动点击器免费下载
  • 怎么用ps做网站首页图片百度一下就知道
  • 陕西企业网站建设哪家专业网络营销的主要手段
  • 单页网站制作合肥网络seo
  • 学做立体书的网站青岛网站排名公司
  • 做很多网站营销方式和营销策略
  • 营销型网站建设文章seo与网络推广的区别和联系
  • wordpress用户邀请系统seo基础知识考试
  • 萧山网站建设网站搭建关键词排名
  • 南山区做网站百度怎么创建自己的网站
  • 拨号地址怎么做网站网络推广渠道排名
  • 怎么样建网站全球搜效果怎么样
  • 网站上如何做跳转页面网络推广公司运作
  • 聊城哪里做优化网站微博指数
  • 五莲网站制作谷歌搜索引擎入口2022
  • 网页版梦幻西游勇闯火焰山攻略整站seo排名费用价格
  • 旅游网站建设目标分析一个企业该如何进行网络营销
  • 如何介绍网站模板下载地址搜索引擎优化关键词选择的方法有哪些
  • 苏州画廊网站建设网站推广优化方案
  • 王者荣耀网站开发目的优化设计三年级上册语文答案