C++中怎么使用工厂函数
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容介绍了"C++中怎么使用工厂函数"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!如果在构造过程
千家信息网最后更新 2026年11月01日C++中怎么使用工厂函数如果在构造过程中需要"虚行为",使用工厂函数 Reason(原因) Note(注意) Example, bad(反面示例) Example(示例)
本篇内容介绍了"C++中怎么使用工厂函数"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
如果基类对象的状态必须依赖对象的派生部分,我们需要使用虚函数(或等价物)以便尽量压缩没有完美构造完成的对象被错误使用的时间窗口。
工厂的返回类型通常应该默认返回unique_ptr;如果有些用法需要共享,调用者可以将unique_ptr移动到shared_ptr。然而,如果工厂的作者知道返回对象的所有的用法都是共享方式,也可以返回shared_ptr,这样在函数体内部可以使用make_shared节约一次内存分配。
class B {
public:
B() {
/* ... */
f(); // BAD: C.82: Don't call virtual functions in constructors and destructors
/* ... */
}
virtual void f() = 0;
};class B {
protected:
class Token {};
public:
explicit B(Token) { /* ... */ } // create an imperfectly initialized object
virtual void f() = 0;
template
static shared_ptr create() // interface for creating shared objects
{
auto p = make_shared(typename T::Token{});
p->post_initialize();
return p;
}
protected:
virtual void post_initialize() // called right after construction
{ /* ... */ f(); /* ... */ } // GOOD: virtual dispatch is safe
};
class D : public B { // some derived class
protected:
class Token {};
public:
explicit D(Token) : B{ B::Token{} } {}
void f() override { /* ... */ };
protected:
template
friend shared_ptr B::create();
};
shared_ptr p = D::create(); // creating a D object make_shared调用的构造函数必须是公开的。通过要求一个保护的令牌保证构造函数不能被公开调用,这样我们就避免了不完全构造的对象流出。由于提供了一个工厂方法create(),(自由存储上的)构造过程可以便利地实施。
Note(注意)
常规的工厂方法在自由存储上分配对象内存,而不是在堆栈或者封闭的对象内。
"C++中怎么使用工厂函数"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
函数
工厂
对象
过程
C++
自由
内存
内容
方法
更多
知识
示例
分配
存储
实用
学有所成
接下来
令牌
作者
原因
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
花魁咖啡
伟宏互联网科技
互联网科技财经
无线互联网科技
润盈互联网科技
广州紫鲸互联网科技
重庆科技学院互联网
卫星互联网科技股票
广州慧亚互联网科技怎么样
互联网科技教育视频
崇明区互联网教育科技售后服务
苏州铭阳互联网科技有限公司
深圳市优智互联网科技有限公司
互联网科技研发水平
燊美集互联网科技有限公司
有人说阿里系是互联网科技企业
广州有谷有贝互联网科技有限公司
东营紫格互联网科技
保山浩联互联网科技有限公司
黑龙江互联网科技公司
广州万易互联网科技有限公司
万易互联网科技有限公司
电子科技大学互联网
互联网科技热点资讯
互联网科技创新服务
移动互联网年度科技创新
深圳艾果互联网通讯科技
互联网时代科技型公司的机会
万物互联网智能科技
互联网科技大佬云集