zoukankan      html  css  js  c++  java
  • 游记(5)

    《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  {
    public:
    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 main ()  {
    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;
    
    
    }
    

      对上述代码做了精简:

    #include <iostream>
    using namespace std;
    
    class func {
    public:
        func() {
        }
        double operator( )  (double x) {
            return 2 * x;
        }
    };
    
    int main() {
        func f;
        double a = f(4);
        double b = f.operator()(4);
    
        cout << "f(4) == " << a << endl;
        cout << "f.operator()(4) == " << b << endl;
    
    
    
    }
    

    运行结果:

    f(4) == 8
    f.operator()(4) == 8
    

      

    s

  • 相关阅读:
    读写锁
    MySQL事务处理和锁机制
    SQL注入攻击
    数据库三范式
    Slave延迟很大的优化方法总结(MySQL优化)
    MySQL主从复制的原理及配置
    消息总线的应用场景
    Java NIO通信框架在电信领域的实践
    逃逸分析
    BOM
  • 原文地址:https://www.cnblogs.com/hanxinle/p/8012784.html
Copyright © 2011-2022 走看看