конструктор myclass
принимает строку по значению, что делает ее временной.Затем вы привязываете это временное значение к члену m_str
.При выходе из конструктора ссылка на член становится недействительной.Вместо этого: myclass(const string& s) : m_str(s) {}
Даже если это не очень хорошая идея.Вообще говоря, использование ссылок в качестве членов может быть опасным, потому что вы должны очень четко понимать семантику жизни.Вам следует подумать о том, чтобы просто хранить строку по значению в вашем классе, если у вас нет особых причин не делать этого.