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

自适应网站的缺点做易购网站

自适应网站的缺点,做易购网站,一键logo生成器在线,wordpress文章首页不显示怎么办前面我们介绍了单例模式的两种实现:懒汉模式和饿汉模式,今天我们以新的方式来实现可复用的单例模式。 奇异递归模板是指父类是个模板类,模板类型是子类类型,即父类通过模板参数可以知道子类的类型。 // brief: a singleton base…

前面我们介绍了单例模式的两种实现:懒汉模式和饿汉模式,今天我们以新的方式来实现可复用的单例模式。

奇异递归模板是指父类是个模板类,模板类型是子类类型,即父类通过模板参数可以知道子类的类型。

// brief: a singleton base class offering an easy way to create singleton
#include <iostream>template<typename T>
class Singleton{
public:static T& Instance(){static T instance;return instance;}Singleton(const Singleton&)=delete;Singleton& operator =(const Singleton&)=delete;protected:Singleton() {std::cout<<"constructor called!"<<std::endl;}
};
/********************************************/
// Example:
// 1.friend class declaration is requiered!
// 2.constructor should be private
class DerivedSingle : public Singleton<DerivedSingle> {// !!!! attention!!!// needs to be friend in order to// access the private constructor/destructorfriend class Singleton<DerivedSingle>;private:DerivedSingle() = default;
};int main(int argc, char* argv[]){DerivedSingle& instance1 = DerivedSingle::Instance();DerivedSingle& instance2 = DerivedSingle::Instance();return 0;
}

该模式的思想是,通过模板类的静态成员变量来确保一个类只有一个实例,并且可以通过静态函数来获取该实例。在这种模式下,我们将 Singleton 类作为基类,派生出一个具体的单例类(例如 MySingleton),并让 MySingleton 类继承自 Singleton<MySingleton>

这个单例模式有非常多的实现细节需要注意,足以考察你的C++功底。

首先Singleton的构造是protected的,因为Singleton本身只是个帮助类,并没有单独实例化的需要,但是子类需要实例化,所以需要protected子类才可以访问。

Singleton 类中,我们定义了一个 Instance() 静态函数,返回一个类型为 T& 的对象。在 Instance() 函数中,我们定义了一个静态局部变量 instance,用于存储 T 类型的唯一实例。由于静态局部变量的生命周期与程序的运行周期相同,因此 nstance 只会在程序第一次调用 Instance() 函数时被创建,并在程序结束时被销毁。通过返回 instance 的引用,我们可以保证每次调用 Instance() 函数时都返回同一个实例。

此外,我们在 Singleton 类删除拷贝构造和赋值运算符的语句,以确保单例对象不能被复制或赋值,并且能够正确释放资源。

在这里基类的析构函数可以不需要 virtual ,因为子类在应用中只会用 Derived 类型,保证了析构时和构造时的类型一致

MySingleton 类中,我们只需要简单地继承自 Singleton<MySingleton>,并在构造函数中添加一些特定的逻辑即可。由于 MySingleton 类已经继承自 Singleton<MySingleton>,因此可以通过调用 Singleton<MySingleton>::Instance() 函数来获取唯一的 MySingleton 实例。

这种使用 CRTP 实现的单例模式具有以下优点:

  • 代码简洁:只需要定义一个基类和若干个派生类即可,无需编写大量重复的单例模式代码。
  • 线程安全:由于静态局部变量的创建是线程安全的,因此该模式天然支持多线程环境下的单例实现。
  • 性能高效:由于只需要在程序第一次调用 Instance() 函数时创建实例,因此该模式对性能的影响较小

这里也有几个特殊的限制:

  • 首先,子类还必须将构造私有化
  • 其次,由于子类构造私有化,但父类需要创建子类实例,因此需要将父类声明为子类的友元类。
http://www.yayakq.cn/news/774445/

相关文章:

  • php网站开发报告图片网站如何做百度排名
  • 搞钱的路子网站dw响应式网站模板
  • 顺德大良网站建设微网站平台微网站建设方案模板
  • 有特点的个人网站在北京注册公司在哪个网站上
  • 网站制作学费多少钱大东吴建设新材料公司网站
  • 兼职做放单主持那个网站好电子商务电商网站饿建设
  • 中仑建设网站设计公司起名字大全
  • 本作业是网站建设与维护服装电子商务网站有哪些
  • 网上商城网站建设网络推广网络营销软件
  • 潍坊哪里有做360网站的WordPress显示中文
  • 专门查企业信息的网站舆情优化
  • iis网站重定向深圳网站设计 深圳市利
  • 网站改版业务做电商网站搭建就业岗位
  • 代做电子商务网站作业wordpress照片评选插件
  • 网站建设核电东莞合网站建设
  • 承德网站建设费用上往建站
  • 外汇平台网站开发需求说明中标公示查询官网
  • 网站为什么百度不收录温州企业建站系统模板
  • 建网站费用记技术服务费上海知名网站建设
  • 网页设计与网站建设毕业设计糖果屋网站建设策划书
  • 站长工具seo综合查询方法公司做竞拍网站的收入怎么报税
  • 中国观鸟记录的网站架构浙江建设职业技术学院塘栖校区网站
  • 如何做平台网站淘宝客如何做淘宝客网站
  • 成都建网站公司电话国外建设网站
  • pc站转换手机网站中信建设有限责任公司陶扬
  • 贺兰县住房和城乡建设局网站网站开发 flex布局
  • 网站免费发布与推广搜索网站有哪几个
  • 无锡响应式网站制作阿里云网站模板 解析
  • 做网站的会计分录做谷歌推广比较好的公司
  • 网站建设过程发生的费用王天野演员