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)

相关推荐

  • 怎么解决Java中Unexpected Exception报错问题

    技术怎么解决Java中Unexpected Exception报错问题这篇文章主要讲解了“怎么解决Java中Unexpected Exception报错问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的

    攻略 2021年11月16日
  • 分析DevOps生命周期

    技术分析DevOps生命周期这篇文章主要介绍“分析DevOps生命周期”,在日常操作中,相信很多人在分析DevOps生命周期问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”分析DevOps生

    攻略 2021年11月5日
  • Elasticsearch-1

    技术Elasticsearch-1 Elasticsearch-11-今日内容初识 ElasticSearch安装 ElasticSearchElasticSearch 核心概念操作 ElasticSe

    礼包 2021年11月24日
  • 羊绒衫怎么洗最好,羊绒衫染了用什么方法可以洗掉

    技术羊绒衫怎么洗最好,羊绒衫染了用什么方法可以洗掉清洗羊绒衫前羊绒衫怎么洗最好,先注意羊绒衫的衣标,尤其是衣服的成分,清洗方式,水温及晾干方法,不要因为操作失误,浪费一件衣服。 将洗衣盆内接好清水,水温控制在35度以下,

    生活 2021年10月28日
  • 归并排序和逆序对数量

    技术归并排序和逆序对数量 归并排序和逆序对数量归并排序
    #includeiostreamusing namespace std;
    const int N = 100010;
    int q[N];
    int

    礼包 2021年11月5日
  • 怎么实现提示用户退出程序

    技术怎么实现提示用户退出程序这篇文章主要讲解了“怎么实现提示用户退出程序”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么实现提示用户退出程序”吧!青铜级别# 青铜 im

    攻略 2021年10月22日