- UID
- 2198
注册时间2005-6-29
阅读权限255
最后登录1970-1-1
副坛主
该用户从未签到
|
#include "stdafx.h"
#include <iOStream>
using namespace std;
typedef void (*PFUN)(ostream& o,int);
class MyCoutSetWidth
{
private:
PFUN pfun;
int width;
public:
MyCoutSetWidth(PFUN fun,int w):pfun(fun),width(w){}
friend ostream& operator<<(ostream& o,MyCoutSetWidth mycout);
};
ostream& operator<<(ostream& o,MyCoutSetWidth mycout)
{
mycout.pfun(o,mycout.width);
return o;
}
void _setwidth(ostream& o,int w)
{
o.width(w); // 核心在于友元中对设置宽度函数的一个调用
}
MyCoutSetWidth setwidth(int w)
{
return MyCoutSetWidth(_setwidth,w);
}
int main(int argc, char* argv[])
{
cout<<setwidth(4)<<12<<endl;
return 0;
} |
|