当前位置:  开发笔记 > 编程语言 > 正文

C++中的工厂方法模式实现:作用域,指针与引用

如何解决《C++中的工厂方法模式实现:作用域,指针与引用》经验,为你挑选了2个好方法。

我一直在维基百科上看一下示例C++ Factory方法模式,并提出了几个问题:

    由于工厂方法是静态的,这是否意味着新创建的对象不会超出范围并且在工厂方法退出时调用析构函数方法?

    为什么返回指针而不是引用?这完全是一个偏好问题,还是一个重要原因?

编辑:我想的越多,引用和返回的指针都将保留在范围内,因为它们是在方法之外引用的.因此,不会在任何一个上调用析构函数.所以这是一个偏好问题.没有?

edit2:我在返回的引用上打印出析构函数调用,并且在程序退出之前不会打印.所以,除非有进一步的反馈,我现在就去参考.这样我就可以使用"." 返回对象上的运算符.



1> sharptooth..:

    静态方法是可以在没有工厂实例的情况下调用的方法.这与新创建的对象的生命周期无关.您可以使用具有相同成功的非静态方法.工厂方法通常不需要来自同一类的现有对象的任何数据,因此不需要现有实例,这就是为什么因子方法通常是静态的.

    您将使用new来创建工厂将返回的对象.通常用指针返回它们.这明确表明它是一个新的对象,而调用者必须关注它的生命周期.



2> Ed...:

我认为理解内存管理存在更大的问题.工厂方法是在堆上分配项目(使用new).堆上的项永远不会自动回收(除了过程终止时的现代桌面操作系统).您描述的行为是堆栈中的项目,当您离开本地范围时,它们将被回收.

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有