Кажется, что в коде нет очевидной проблемы, из-за которой он блокируется перед нажатием c.display()
, но он может выглядеть так, как он это делает.
Операция cout << ptr << '\n';
не очищает поток, а это означает, что выходные данные могут быть кэшированы до более позднего времени.Может случиться так, что вся программа завершила в основном и ждет, когда пользователь введет символ в getchar()
.
Попробуйте запустить код в отладчике или измените вывод на cout << ptr << endl;
.
Кстати: вы теряете память в operator+
и, вероятно, должны позаботиться об этом.Я знаю, что вы уже спрашивали о том, как это сделать, возможно, вам не понравились (или не поняли) решения, которые были предложены, но оставить это как есть - не решение.
operator=
не гарантирует, чтоу вас достаточно места для хранения всей строки, что означает, что вы можете инициировать неопределенное поведение.