'\0'
представляет собой одиночный char
с порядковым значением 0. operator+=(char)
добавляет any char
к строке независимо от ее значения. Сравнив y.size()
до и после добавления, вы увидите, что размер увеличивается на 1.
"\0"
- строковый литерал, a const char[2]
, содержащий два нулевых символа, один явный вами и один неявный компилятором. Когда operator+=(const char*)
рассматривается как строка с нулевым окончанием в стиле C, ее логическая длина останавливается на первом нулевом символе, следовательно, ее длина равна нулю. Сравнивая y.size()
до и после добавления, вы увидите, что размер не меняется.
operator==
учитывает size()
. Две строки разных размеров вернут false. Две строки одинакового размера будут сравнивать все свои char
с, включая встроенные нулевые символы.