码迷,mamicode.com
首页 > 编程语言 > 详细

游记(6) - C++大局观

时间:2017-12-09 22:27:15      阅读:177      评论:0      收藏:0      [点我收藏+]

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

游记(6) - C++大局观

标签:对象   with   成员   class   nbsp   ret   cal   operator   opera   

原文地址:http://www.cnblogs.com/hanxinle/p/8012784.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!