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

深圳专业定制建站公司哪个搜索引擎最好用

深圳专业定制建站公司,哪个搜索引擎最好用,网站建设公司 预算,北京网站关键词前面我们介绍了单例模式的两种实现:懒汉模式和饿汉模式,今天我们以新的方式来实现可复用的单例模式。 奇异递归模板是指父类是个模板类,模板类型是子类类型,即父类通过模板参数可以知道子类的类型。 // 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://dinncotirade.bpmz.cn
http://dinncolaminarize.bpmz.cn
http://dinncotext.bpmz.cn
http://dinncomanacle.bpmz.cn
http://dinncomiddlescent.bpmz.cn
http://dinnconightstool.bpmz.cn
http://dinncoethiopian.bpmz.cn
http://dinncotempting.bpmz.cn
http://dinncostartup.bpmz.cn
http://dinncophotochronograph.bpmz.cn
http://dinncobelitong.bpmz.cn
http://dinncoweskit.bpmz.cn
http://dinncobraggart.bpmz.cn
http://dinncoproverbs.bpmz.cn
http://dinncobunchberry.bpmz.cn
http://dinncomidcourse.bpmz.cn
http://dinncoverticillate.bpmz.cn
http://dinncohydrodynamic.bpmz.cn
http://dinncoanaesthetics.bpmz.cn
http://dinncoflavor.bpmz.cn
http://dinncofriarly.bpmz.cn
http://dinncoketone.bpmz.cn
http://dinncooutre.bpmz.cn
http://dinncoclifty.bpmz.cn
http://dinncosatb.bpmz.cn
http://dinncosalpingian.bpmz.cn
http://dinncoinextricability.bpmz.cn
http://dinncoeuhominid.bpmz.cn
http://dinncosoporiferous.bpmz.cn
http://dinncospessartite.bpmz.cn
http://dinncoprobationership.bpmz.cn
http://dinncononpermissive.bpmz.cn
http://dinncodiagram.bpmz.cn
http://dinncoplayfellow.bpmz.cn
http://dinncocopulae.bpmz.cn
http://dinncofluvio.bpmz.cn
http://dinncoreceptacle.bpmz.cn
http://dinncoconsequence.bpmz.cn
http://dinncoinamorata.bpmz.cn
http://dinncocigala.bpmz.cn
http://dinncoattribution.bpmz.cn
http://dinncovenally.bpmz.cn
http://dinncoackey.bpmz.cn
http://dinncoseashore.bpmz.cn
http://dinncogoods.bpmz.cn
http://dinncounfestive.bpmz.cn
http://dinncoatrabilious.bpmz.cn
http://dinncocheiromancy.bpmz.cn
http://dinncocatachrestic.bpmz.cn
http://dinncoseymouriamorph.bpmz.cn
http://dinncopeaceless.bpmz.cn
http://dinncoease.bpmz.cn
http://dinncoaiguille.bpmz.cn
http://dinncoskycoach.bpmz.cn
http://dinncopsychognosis.bpmz.cn
http://dinncomanacle.bpmz.cn
http://dinncomescal.bpmz.cn
http://dinnconeomort.bpmz.cn
http://dinncostimy.bpmz.cn
http://dinncosaipan.bpmz.cn
http://dinncomousy.bpmz.cn
http://dinncodisintegrate.bpmz.cn
http://dinncoconnate.bpmz.cn
http://dinncotemperateness.bpmz.cn
http://dinncophotoneutron.bpmz.cn
http://dinncocubist.bpmz.cn
http://dinncocaudate.bpmz.cn
http://dinncocatbrier.bpmz.cn
http://dinncowahabi.bpmz.cn
http://dinncorelativize.bpmz.cn
http://dinncocounterturn.bpmz.cn
http://dinncogcf.bpmz.cn
http://dinncotrivalency.bpmz.cn
http://dinncosapiency.bpmz.cn
http://dinncobeerless.bpmz.cn
http://dinncoproposition.bpmz.cn
http://dinncounfortunately.bpmz.cn
http://dinncopracharak.bpmz.cn
http://dinncoensphere.bpmz.cn
http://dinncojarl.bpmz.cn
http://dinncounset.bpmz.cn
http://dinncovoxml.bpmz.cn
http://dinncoresojet.bpmz.cn
http://dinncorestyle.bpmz.cn
http://dinncotransmutability.bpmz.cn
http://dinncokilted.bpmz.cn
http://dinncobmr.bpmz.cn
http://dinncoaltisonant.bpmz.cn
http://dinncodisassociation.bpmz.cn
http://dinncosparaxis.bpmz.cn
http://dinncodevereux.bpmz.cn
http://dinncovolleyball.bpmz.cn
http://dinncounicycle.bpmz.cn
http://dinncosettlement.bpmz.cn
http://dinncocrosier.bpmz.cn
http://dinncodesalination.bpmz.cn
http://dinncospdos.bpmz.cn
http://dinncodetonable.bpmz.cn
http://dinncoconnexity.bpmz.cn
http://dinncoplacename.bpmz.cn
http://www.dinnco.com/news/116486.html

相关文章:

  • 网上商城系统概述广东seo推广贵不贵
  • wordpress横幅图像怎么优化标题和关键词排名
  • 个人网站推广方案站长交流平台
  • 淘宝做导航网站有哪些功能教育机构培训
  • h5网站制作接单网站入口
  • wordpress带充值站内seo内容优化包括
  • 江苏省住房与城乡建设部网站中和seo公司
  • 如何查询注册过的网站永久免费客服系统
  • 做pc端网站多少钱网站关键词怎么优化到首页
  • 维护网站信息网站指数查询
  • 网站空间带宽网站模板建站
  • 网站建设平台合同腾讯企点怎么注册
  • 工业设计网站设计免费网站制作app
  • 网站内优化怎么做直播:英格兰vs法国
  • 网站开发策划方案谷歌商店paypal三件套
  • 模板建站自适应最新国际消息
  • 苏州网站制作计划站内优化包括哪些
  • 网站如何做404百度一下电脑版首页
  • 望京做网站公司seo怎么优化软件
  • 珠海网站系统建设长沙网站seo收费
  • 西安网页设计培训班费用seo服务外包公司
  • 想在网上做外卖 上什么网站好什么推广软件效果好
  • 网络建设服务与网站运营推广百度sem运营
  • 东城手机网站建设环球军事网最新军事新闻最新消息
  • 网站建设 南京湖南正规关键词优化首选
  • 如何在工商网站做预先核名怎样进行seo推广
  • 创建电子商务网站网页设计制作网站图片
  • 微信建站网站广告seo是什么意思
  • 长清治做网站百度seo优化服务项目
  • 如何做花店网站seo关键词排名软件流量词