神奇C++问题(4)
试解释这段程序.
#include <cstdio>
class C {
void (C::*s)();
void a(){x(a,"%c",b,"",c,""); }
void b(){x(a," %c",b,"",c,""); }
void c(){x(a,"\n%c",d,"",c,""); }
void d(){x(a,"\n %c",d,"",c,""); }
void x(void(C::*a)(),char*as,void(C::*b)(),
char*bs,void(C::*c)(),char*cs){
switch(int l=getchar()) {
case -1: s=0; return;
case ' ': case '\t': printf(bs,l); s=b; break;
case '\n': printf(cs,l); s= c; return;
default: printf(as,l); s= a; break;
}
}
public:
C():s(a){while(s)(this->*s)();}
};
int main(int,char*[]) {
C a;
return 0;
}