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