编写无参数的自己的操控器
不使用参数编写操控器不需要类将复杂宏的派生并使用。 假定打印机需要对 ESC[输入粗体模式。 您可以将这对直接到流中:
cout << "regular " << '\033' << '[' << "boldface" << endl;
也可以定义 bold 操控器,插入字符:
ostream& bold( ostream& os ) {
return os << '\033' << '[';
}
cout << "regular " << bold << "boldface" << endl;
全局定义的 bold 函数采用 ostream 引用参数和返回 ostream 引用。 ,因为它不需要任何私有类元素,访问它不是成员函数或友元。 bold 功能连接器到流,因为重载流的 << 运算符接受此类功能,使用下面类似的声明:
_Myt& operator<<(ios_base& (__cdecl *_Pfn)(ios_base&))
{
// call ios_base manipulator
(*_Pfn)(*(ios_base *)this);
return (*this);
}
可以使用此功能扩展其他重载运算符。 在此例中,是意外发生的 bold 插入字符到流中。 函数不一定调用,在插入到流时,那么,当相邻字符打印时。 因此,由于流的缓冲区,打印可以延迟。