我想知道返回指针的函数是否应该是const是否有任何原因.我正在研究一些在大多数地方似乎是const-correct的代码,但由于某种原因,并没有声明函数将指针返回为const.例如,它写道
virtual Joint* getJointByID(unsigned int id);
Run Code Online (Sandbox Code Playgroud)
代替
virtual Joint* getJointByID(unsigned int id) const;
Run Code Online (Sandbox Code Playgroud)
如果getJointByID函数本身实际上并没有改变该类的任何成员,那么const是否应该存在?
这实际上是有道理的.如果要使用const它声明函数,则意味着它可以在常量实例(constvar.getJointByID ...)上使用.但是如果它返回一个指向内部结构的指针然后可以修改它,它将允许用户绕过实例的const限制.
如果没有声明const(就像它一样),则无法在const实例上调用该函数,因此保留了const.如果它已经宣布const,它应该最好返回一个const Joint*.
(我在这里假设Joint*确实是类数据结构的一部分.如果类返回一个左右的新分配的副本,Joint那么它不能保持不变.这取决于实现)
| 归档时间: |
|
| 查看次数: |
219 次 |
| 最近记录: |