标签:对象 with 成员 class nbsp ret cal operator opera
《effective C++》及《c++ 数据结构与算法》第一章小得,消除了以前的一些困惑。
0 将C++ 视作一个语言城邦,这个城邦支持的公民有:0、C 1、OO (c with class) 2 、template 3、STL,我以前学习和接触最多的是 C和 class,模板和 STL 需要自己去夯实一下。
1 继承中,子类可以继承保护和公有成员,但是不代表子类对象可以直接调用,
2 函数对象 operator () :包含函数调用运算符定义的对象称为函数对象,以前自己写得 less_than.. 就是在做这件事情,不过那个例子是为了说明 lambda 的用法,函数的参数是 函数对对象,在定义构造函数的时候,也可以将构造函数传入作为实参。STL 特别依赖于函数对象。
class func { func() {} double operator( ) (double x) { return 2 * x; } double sum ( func fc,int a, int b) { double sum = 0; for ( int i = a ; i <= b ; i++ ) sum += fc(i); return sum; } //call sum as follow int a = 1; int b = 12; func f; double r0 = sum ( f, a , b); double r1 = sum ( func(), a , b); cout << "R by function obj " << r0 << endl; cout << " R by constructor " << r1<< endl;
标签:对象 with 成员 class nbsp ret cal operator opera
原文地址:http://www.cnblogs.com/hanxinle/p/8012784.html