C++中关于委派(Delegates)的实现示例

2020-01-06 13:19:38于丽
  • auto set_sum4= create_delegate(&a,&A::set_sum4);  auto af8 = create_delegate(&a,&A::f8); 
  • auto sqr = create_delegate(&A::sqr); // static function </int(int&)>   
  •   set1(25); 
  • int x = 5;  int k = inc(x); 
  • k = incp(x);  std::cout << "a.get():" << a.get() << std::endl; 
  • std::cout << "k: " << k << std::endl;  std::cout << "x: " << x << std::endl; 
  • std::cout << "af5(1,2,3,4,5): " << af5(1,2,3,4,5) << std::endl;   
  • set_sum4(x,1,2,3,20);  std::cout << "after set_sum4(x,1,2,3,20)" << std::endl; 
  • std::cout << "a.get(): " << a.get() << std::endl;  std::cout << "x: " << x << std::endl; 
  • std::cout << "af8(1,2,3,4,5,6,7,8): " << af8(1,2,3,4,5,6,7,8) << std::endl;  std::cout << "sqr(2.1): " << sqr(2.1) << std::endl; 

    执行上述程序的打印结果如下:

     

     
    1. a.get():30  k: 35 
    2. x: 35  af5(1,2,3,4,5): 45 
    3. after set_sum4(x,1,2,3,20)  a.get(): 56 
    4. x: 56  af8(1,2,3,4,5,6,7,8): 92