标签:对象 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