如何在微软文档判断类方法是否原地修改对象?CStringT相关疑问
CStringT原地修改方法的判断要点
1. 标识原地执行的关键词
对于CStringT::MakeReverse和CStringT::MakeUpper,微软官方文档里有两个核心标识:
- 方法的返回类型为
void:这说明方法不会生成新的字符串副本返回,只能是直接修改当前对象本身。 - 文档描述中的**"in place"**:官方文档会明确用这个短语说明操作是在原对象上执行,不会创建新实例。
2. 新手判断方法是否原地修改的技巧
你之前认为"返回值意味着创建新副本"的理解不完全准确,判断方法可以从这几点入手:
- 优先看返回类型:
- 返回
void:必然是原地修改,无新对象生成。 - 返回
CStringT&(对象引用):修改自身后返回引用,支持链式调用,属于原地修改(比如CStringT::Trim)。 - 返回
CStringT(值类型):才是创建并返回新副本,原对象保持不变。
- 返回
- 查看文档描述文本:找类似"modifies this string"、"alters the contents of this object"、"in place"这类明确说明修改当前对象的表述。
- 参考方法命名规律:MFC/ATL里
MakeXXX前缀的方法(如MakeReverse、MakeUpper)几乎都是原地修改;而返回新副本的方法通常不会用Make开头。
内容的提问来源于stack exchange,提问作者Jason Cho
相关产品推荐
相关产品推荐

