今天下午去图书馆淘书,又把《C++必知必会》借来了。我记得自己是没怎么看过的,翻了几页才发现很多文字似曾相识。原来当初就看了两三节,真是汗颜。
C++这门课程当初学得倒是挺好,不过时过境迁,许多生僻的语法大抵都忘光了。比如说函数成员,看到"->*"这玩艺儿我心里都发忤。
好还,谷歌一下就真相大白了:http://campus.chsi.com.cn/xy/com/201006/20100617/97808273.html。
说实话,《C++必知必会》这本书翻译得太过稀烂,看到他把积分翻译成整合,哥不禁会心地笑了。为了表示我读过,我把最后一段代码Mark一下。
1
class
Func {
2 public :
3 virtual ~ Func();
4 virtual double operator ()( double ) = 0 ;
5 };
6
7 template < class C >
8 class MFunc : public Func {
9 public :
10 MFunc( C & obj, double (C:: * f)( double ) ): obj_(obj), f_(f) {}
11 double operator ()( double d ) { return (obj_. * f_)( d ); }
12 private :
13 C & obj_;
14 double (C:: * f_)( double );
15 };
16
17
18 AClass anObj;
19 MFunc < AClass > f( anObj, & AClass::aFunc );
20 double area = integrate( f, 0.0 , 2.71828 );
2 public :
3 virtual ~ Func();
4 virtual double operator ()( double ) = 0 ;
5 };
6
7 template < class C >
8 class MFunc : public Func {
9 public :
10 MFunc( C & obj, double (C:: * f)( double ) ): obj_(obj), f_(f) {}
11 double operator ()( double d ) { return (obj_. * f_)( d ); }
12 private :
13 C & obj_;
14 double (C:: * f_)( double );
15 };
16
17
18 AClass anObj;
19 MFunc < AClass > f( anObj, & AClass::aFunc );
20 double area = integrate( f, 0.0 , 2.71828 );