关于这一行:
经过s[9]
的{{1}},但是void setChar(size_t index, char c)
(在if中,在行内:``)?
是*this
还是s1
?那么什么是nullptr
(在同一行:_str
),是*this = _str;
?
s1
答案 0 :(得分:0)
始终*this
是执行该函数的对象。如果您在s1[4]
内,*this
将是s1
。
使用*this = _str;
只是调用operator=
的{{1}}重载之一的一种参与方式。通过为自己分配MyString
的新副本,它具有“取消共享”的效果。
此外,很长一段时间以来,已经知道引用计数字符串不是优化。例如,在_str
的输出中,代码将创建一个不必要的s1[0]
,以防有人为其分配值。您还为您创建的每个字符串的refcount获得单独的内存分配,即使您从未打算共享它