又一个注定要投反对票的新手问题。
通过实验,似乎
CStringT::MakeReverse
和 CStringT::MakeUpper
都就地更改了字符串。
关键字是什么 https://learn.microsoft.com/en-us/cpp/atl-mfc-shared/reference/cstringt-class,我应该注意一下,说这些操作是“就地”的?
在我的新手看来,返回一个值意味着这些方法会创建新副本。
文档中有几点暗示这些方法正在就地改变当前对象:
这些方法未标记为
const
。虽然不是必须的,但不修改对象的方法应该标记为 const
,缺少它暗示这些方法确实修改了它。
以
Make
开头的方法名称通常暗示它们修改当前对象以将其“变成”其他东西。
这些方法返回
CStringT&
。如果他们创建一个新对象,它将按值返回。除了当前对象之外,没有其他对象可以返回对此处的引用。
文档文本,例如“反转 CStringT 对象中字符的顺序。” 提示当前对象将被修改。