通过实验,似乎
CStringT::MakeReverse
和 CStringT::MakeUpper
都就地更改了字符串。
CStringT
类文档上的关键字是什么,说这些操作是“就地”的?
在我的新手看来,返回一个值意味着这些方法会创建新副本。
收集上面评论中提到的好点:
文档中有几点提示这些方法正在就地改变当前对象。
这些方法未标记为
const
。虽然不是必须的,但不修改对象的方法应该标记为 const
,缺少它暗示这些方法确实修改了它。
以
Make
开头的方法名称通常暗示它们修改当前对象以将其“变成”其他东西。
这些方法返回
CStringT&
。如果他们创建一个新对象,它将按值返回。除了当前对象之外,没有其他对象可以返回对此处的引用。
文档文本,例如“反转 CStringT 对象中字符的顺序。” 提示当前对象将被修改。