use*_*879 5 c++ const-correctness
在编写充当其他库(C样式)API包装器的类时,确保const正确性的相关实践是什么?我正在编写一个类(Renderer),它将特定于应用程序的渲染调用转换为相应的OpenGL(以及稍后可能是DirectX)调用.这个类实际上没有自己的状态,通过调用Renderer :: applyTransform(const Matrix&)来修改,但是在内部调用改变OpenGL状态的API.在这种情况下,将这样的API标记为const是正确的事情,或者"修改可观察状态"是否也扩展到此类包装的OpenGL状态,要求我使其成本不成本?
这类似于Const-correctness和硬件写入,但也许这是一个更具体的用例.
如果您正在调用通过非 const 指针获取成员变量的 C 函数,那么这些包装函数可能不应该是 const。如果他们只是观察状态而不修改它,您可以将您的方法设置为 const——即使 C API 不是 const-正确的,您也可以根据需要在成员变量上使用const_cast<>或。mutable
从语义的角度思考——如果一个方法不改变世界的状态,就让它成为常量。如果它确实改变了世界的状态,那么它可能不应该是 const,除非改变的状态类似于缓存,它只是导致改变的优化而不是必需的东西。
| 归档时间: |
|
| 查看次数: |
392 次 |
| 最近记录: |