Die Überschreibungen sync und overflow werden von der Stream-Klasse aufgerufen, wenn der Ausgabe-Puffer in das Gerät schreiben soll, z.B. bei dem Aufruf von flush. Sie rufen die privaten Funktionen WriteToConsole bzw. WriteCharToConsole auf, die die eigentliche Ausgabe durchführen.int OG_constreambuf::sync(){ WriteToConsole(); return(0);}
int OG_constreambuf::overflow(int c){ WriteToConsole();
if (c != EOF) if (pbase() == epptr()) WriteCharToConsole(c); else sputc(c);
return 0;}
Der Destruktor und die Funktion DeleteConsole sind trivial.
OG_constreambuf::~OG_constreambuf(){ sync();
if (pReserve) delete pReserve; DeleteConsole();}
void OG_constreambuf::DeleteConsole(){ CloseHandle(hConsoleOut);
FreeConsole();}