C++中怎么使用工厂函数

技术C++中怎么使用工厂函数本篇内容介绍了“C++中怎么使用工厂函数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!如果在

本文介绍了“如何在C语言中使用工厂函数”的知识。很多人在实际案例的操作中会遇到这样的困难。接下来,让边肖带领大家学习如何应对这些情况!希望大家认真阅读,学点东西!

如果在构造过程中需要“虚拟行为”,使用工厂函数Reason(原因)如果基类对象的状态必须依赖于对象的派生部分,我们需要使用虚拟函数(或等效函数),以便在没有完美构造的对象被错误使用时,最小化时间窗口。

注(注)工厂的返回类型通常应该返回unique _ ptr默认情况下;如果某些用法需要共享,调用者可以将unique_ptr移动到shared_ptr。但是,如果工厂的作者知道返回对象的所有用途都是共享的,他也可以返回shared_ptr,这样make_shared就可以在函数体中使用,节省一次内存分配。

例子,不好的(反面例子)B类{

公众号:

b(){ 0

/* .*/

f();//BAD: C.82:不要在构造函数和析构函数中调用虚函数

/* .*/

}

虚空f()=0;

};B类示例(

受保护:

类令牌{ };

公众号:

显式B(令牌){ /*.*/} //创建一个初始化不完善的对象

虚空f()=0;

模板类T

静态shared_ptrT create() //创建共享对象的接口

{

auto p=make _ sharedT(type name t : token { });

p-post _ initialize();

返回p;

}

受保护:

virtual void post_initialize() //构造后立即调用

{ /* .*/f();/* .*/} //GOOD:虚拟派单安全

};

D类:公共B { //某些派生类

受保护:

类令牌{ };

公众号:

显式D(令牌): B { B:Token { } }

void f()覆盖{ /*.*/};

受保护:

模板类T

friend shared _ ptrT b :3360 create();

};

shared _ ptrD p=d :3360 created();//创建D objectmake_shared调用的构造函数必须是公共的。通过要求一个受保护的令牌,构造函数不能被公开调用,这样我们就可以避免不完全构造对象的流出。由于提供了工厂方法create(),因此可以方便地实现构建过程(在自由存储上)。

注(注)

传统的工厂方法在自由存储上分配对象内存,而不是在堆栈或封闭对象中。

这里介绍一下“如何在C语言中使用工厂函数”的内容。感谢您的阅读。如果你想了解更多的行业,可以关注网站。边肖将为您输出更多高质量的实用文章!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/124822.html

(0)

相关推荐

  • 男的和女的那个,男人与女人的生理期一样吗

    技术男的和女的那个,男人与女人的生理期一样吗男女的生理期是很不一样的,女人明显,男人不明显,女人很易看见,又摸得着,有规律,男人不易看见,不太成规律,只可意会感受男的和女的那个。女人二七天癸至,男人二八精生成。男女生理成

    生活 2021年10月28日
  • 如何理解django中url路由系统

    技术如何理解django中url路由系统如何理解django中url路由系统,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。对于高质量的Web

    攻略 2021年10月21日
  • 同性恋的原因,同性恋和父母的基因有关系吗

    技术同性恋的原因,同性恋和父母的基因有关系吗引起同性恋的原因同性恋的原因,至今没有肯定的说法,一般认为同性恋和以下因素有关:
    一,遗传因素:即生物学因素,有人发现同性恋者,在同卵双生子中远比异卵双生子中多见。
    二,儿童角

    生活 2021年10月30日
  • Linux WIFI 4G内核怎么配置

    技术Linux WIFI 4G内核怎么配置这篇文章主要介绍“Linux WIFI 4G内核怎么配置”,在日常操作中,相信很多人在Linux WIFI 4G内核怎么配置问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操

    攻略 2021年11月30日
  • 怎么理解Python的calendar模块

    技术怎么理解Python的calendar模块这篇文章主要介绍“怎么理解Python的calendar模块”,在日常操作中,相信很多人在怎么理解Python的calendar模块问题上存在疑惑,小编查阅了各式资料,整理出

    攻略 2021年11月11日
  • 如何分析ASP.NET三层结构及三层架构的缺点

    技术如何分析ASP.NET三层结构及三层架构的缺点如何分析ASP.NET三层结构及三层架构的缺点,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。ASP.NET

    攻略 2021年11月26日