Создание строкового представления состояния класса и его вывод на консоль.
Обратите внимание, что в некоторых случаях одной строковой строки будет недостаточно, вам придется кодировать небольшой цикл печати, который будет создавать многострочное представление состояния класса.
Как только вы «визуализировали» свою программу таким образом, вы можете начать поиск ошибок в ней. Когда вы знаете, какая переменная содержит неправильное значение в конце, легко разместить утверждения везде, где эта переменная назначена или изменена. Таким образом, вы можете точно указать точное место ошибки и исправить ее, не используя пошаговую отладку (что является довольно медленным способом поиска ошибок imo).
Буквально вчера обнаружил действительно неприятную ошибку, не отлаживая ни одной строки:
vector<string> vec;
vec.push_back("test1");
vec.push_back(vec[0]); // second element is not "test1" after this, it's empty string
Я просто продолжал размещать операторы assert и перезапускать программу, пока многострочное представление состояния программы не было правильным.