const
после объявления функции означает, что можно безопасно использовать эту функцию для константного объекта вашего класса. Такие функции не могут изменять какие-либо поля в вашем объекте.
ostream & out
- это глобальный объект std :: cout, который управляет выводом в буфер потока определенного реализацией типа. Проще говоря, этот объект помогает вам печатать информацию в вашей консоли или файле.
ostream & out = cout
означает, что cout является параметром по умолчанию, который будет передан в функцию.
Другой пример:
void printX(int x = 5)
{
std::cout << x;
}
Если вы не предоставите этой функции какой-либо параметр, тогда она будет использовать параметр по умолчанию.
printX(10); \\ will print 10
printX(); \\ will print 5
Why does this work even though there is no function declaration for printTree with no arguments?
Это потому, что эта функция будет использовать cout для распечатки вашего дерева .
I do not understand what the ostream & out is referencing in general.
Вы не можете передать функции копию cout (потому что ее конструктор копирования отключен).