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)

相关推荐

  • 怎么解决react link不跳转问题

    技术怎么解决react link不跳转问题这篇文章主要介绍了怎么解决react link不跳转问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

    攻略 2021年11月26日
  • 苹果手机如何删除通讯录联系人,苹果id怎么删除电话号码

    技术苹果手机如何删除通讯录联系人,苹果id怎么删除电话号码苹果手机删除电话号方法苹果手机如何删除通讯录联系人: 以iPhone8手机为例,删除“联系人”(电话号码)有如下操作: 一、在手机桌面打开“电话”。
    二、打开“

    生活 2021年10月22日
  • 年龄差距大的夫妻,夫妻年龄差大六岁不好吗

    技术年龄差距大的夫妻,夫妻年龄差大六岁不好吗夫妻年龄相差「很大」,可能为婚姻带来严重的问题。如果你和伴侣相差四、五岁,差别不会太大,如果相差十岁以上,就会造成很多困难。例如耐心上,年长的通常会对年轻的一方感到不耐烦年龄差

    生活 2021年10月24日
  • 数据库中常见的术语是什么

    技术数据库中常见的术语是什么这期内容当中小编将会给大家带来有关数据库中常见的术语是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。数据库中常见的术语:字段使用过Office中的Exc

    攻略 2021年11月30日
  • 如何监听Oracle

    技术如何监听Oracle这篇文章将为大家详细讲解有关如何监听Oracle,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Oracle 监听一:没有listener.ora监听文件监听文件

    攻略 2021年12月1日
  • 如何按摩,想自学穴位按摩,从哪里入手

    技术如何按摩,想自学穴位按摩,从哪里入手如果你想自学穴位按摩的话如何按摩,我的建议是,对你自身最有帮助的穴位学起。首先,学东西,学以致用才是最有用。针对邀请回答的这个问题来说,你皮肤过敏的话,我的建议是,先从肺经来学起。

    生活 2021年10月24日