了解写入时复制的基础知识

时间:2017-09-24 13:27:55

标签: c++ proxy copy

关于这一行:

经过s[9]的{​​{1}},但是void setChar(size_t index, char c)(在if中,在行内:``)?

*this还是s1?那么什么是nullptr(在同一行:_str),是*this = _str;

s1

1 个答案:

答案 0 :(得分:0)

始终*this是执行该函数的对象。如果您在s1[4]内,*this将是s1

使用*this = _str;只是调用operator=的{​​{1}}重载之一的一种参与方式。通过为自己分配MyString的新副本,它具有“取消共享”的效果。

此外,很长一段时间以来,已经知道引用计数字符串不是优化。例如,在_str的输出中,代码将创建一个不必要的s1[0],以防有人为其分配值。您还为您创建的每个字符串的refcount获得单独的内存分配,即使您从未打算共享它