gpt4 book ai didi

C++:函数返回指针不应该是 const 的任何原因?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:16:03 26 4
gpt4 key购买 nike

我想知道返回指针的函数是否有任何理由不应该是常量。我正在处理一些在大多数地方似乎是 const 正确的代码,但由于某种原因没有将返回指针的函数声明为 const。例如,它写

virtual Joint* getJointByID(unsigned int id);

代替

virtual Joint* getJointByID(unsigned int id) const;

如果 getJointByID 函数本身实际上没有更改类的任何成员,那么有什么理由不应该存在 const 吗?

最佳答案

这实际上是有道理的。如果函数要用 const 声明,则意味着它可以用于常量实例 (constvar.getJointByID...)。但是,如果它返回一个指向随后可以修改的内部结构的指针,它将允许用户绕过实例的 const 限制。

当没有用 const 声明时(就像现在这样),您不能在 const 实例上调用该函数,因此常量性得以保留。如果它被声明为 const,它最好返回一个 const Joint*

(我在这里假设 Joint* 确实是类数据结构的一部分。如果类返回某个 Joint 左右的新分配拷贝,那么它不是常量。这取决于实现)

关于C++:函数返回指针不应该是 const 的任何原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6744950/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com