我正在寻找一种标准方法来告诉 C++ API 的用户构造函数(或方法)是否接受在堆栈上分配的对象作为有效参数。是否有一种模式(例如特殊的构造函数/方法签名)告诉这里没有堆栈对象/堆栈对象在这里没问题?如果在没有另外记录的情况下允许堆栈对象,则默认假设是否存在常识?
问题说明:当一个类Vector6D
有构造函数Vector6D(const Vector3D& upper, const Vector3D& lower)
时,至少有两种方法可以实现该类:
a) 在构造函数中复制两个向量的元素并忘记Vector3D
实例。
b) 聚合中的Vector3D
实例Vector6D
并继续使用引用进行后续方法调用。
Vector3D
对于 a)分配实例的位置无关紧要。对于 b) 如果Vector3D
实例是在堆栈上分配的,则当堆栈帧消失时,实现将停止工作。
因此,如果不查看实现或文档,用户就无法决定要做什么。
编辑:上下文是一个嵌入式软件项目,我不允许使用 STL、异常、boost 等。