Каким образом типы ofstream или ostream приводят все типы к строке?
любой системный тип пользователя, прошедший в объект ostream, преобразуется в строку или символ *?
как cout & lt; & lt; 4 & lt; & lt; & quot; Hello World & quot ;;
прекрасно работает, как это достигается? это & lt; & lt; оператор перегружен для каждого типа? Есть ли способ достичь этого с помощью только одной общей перегруженной функции? я имею в виду, могу ли я иметь только один перегруженный операторный метод с одним параметром (например, void *), а затем решить внутри этого метода, как типизировать целое число для char *
Все сработало частично, если я перегрузил оператор & lt; & lt; используя шаблон т.е.
class UIStream
{
private:
ofstream stream;
public:
UIStream();
~UIStream();
template <typename T>
UIStream& operator << (const T);
};
так что это работает
UIStream my_stream;
my_stream<<"bcd"<10;
Однако это дает ошибку компилятора, когда я делаю это
my_stream <<endl;
ошибка C2678: двоичный файл "& lt; & lt;" : не найден оператор, который принимает левый операнд типа «UIStream»; (или нет приемлемого преобразования)
Разве std :: endl тоже не тип объекта?