在编程时,我多次遇到以下设计选择:用户创建一个对象并将其传递给其他对象,该对象在第二阶段以某种方式进行处理。
例如,您可以想象一个光线追踪器。用户创建具有某些属性的球体并调用raytracer.addTraceable(sphere)
。现在,我可以想到三种方法来做到这一点。
- 光线追踪器负责释放分配给球体对象的内存
- 用户需要释放分配给球体对象的内存。
- 光线追踪器只复制球体对象,用户和光线追踪器都释放它们的本地副本。
一般来说,在这种情况下最好的设计选择是什么?除了我提到的那些(不包括智能指针)之外,还有其他选择吗?
PS:在使用面向对象的方法时,我在纯 C 中遇到了同样的问题。