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)

相关推荐

  • oracle temp表空间相关知识点有哪些

    技术oracle temp表空间相关知识点有哪些本篇内容主要讲解“oracle temp表空间相关知识点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“oracle te

    攻略 2021年11月9日
  • Fluentd如何实现系统配置

    技术Fluentd如何实现系统配置小编给大家分享一下Fluentd如何实现系统配置,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!首先,本文“系

    攻略 2021年11月20日
  • 改脸型,大家对改脸型的方法了解多少

    技术改脸型,大家对改脸型的方法了解多少东方人向来崇尚瓜子小脸改脸型,所以瘦脸风大行其道。脸部宽大的原因包括脂肪因素、肌肉因素和骨骼因素。因此,针对上述原因采取不同的瘦脸方法,才能有更好的效果。下面就为大家科普一下常见的改

    生活 2021年10月21日
  • 如何使用mybatis collection在转化时候报错的问题

    技术如何使用mybatis collection在转化时候报错的问题如何使用mybatis collection在转化时候报错的问题,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章

    攻略 2021年10月20日
  • RegExp对象的方法有哪些

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

    攻略 2021年11月14日
  • androidstudio怎么新建app(androidstudio签名失败)

    技术Android studio怎么导出APP测试包和构建正式签名包这篇文章主要讲解了“Android studio怎么导出APP测试包和构建正式签名包”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路

    攻略 2021年12月17日