首页 > 编程语言 > 详细

C++, function pointer

时间:2020-01-20 00:43:40      阅读:129      评论:0      收藏:0      [点我收藏+]

0. Function pointers are among the most powerful tools in C.  It can be used to implement function callback in C. C++ takes a slightly different route for callbacks.

1. Function pointer

// (1)define a function

bool lengthCompare(const string&, const string&){

  return true;

}

// (2)define a function pointer and initialize it 

bool (*pf) (const string&, const string&); 

pf = lengthCompare;

 

// (3)call a function through a function pointer

cmpFcn pf = lengthCompare;  // initialize the pf

pf("hi","bye"); // implicitly dereferenced 

(*pf)("hi","type"); // explicitly dereferenced 

 

// (4)define a type named cmpFcn, this type is a pointer to function.  

typedef bool (*cmpFcn) (const string&, const string&);

typedef int func(int*, int); // func is a function type, not a pointer to a function.

 

// (5)function pointer as a parameter

void useBigger(const string&, const string&, bool (*)(const string&, const string&));

void useBigger(const string&, const string&, bool (const string&, const string&));

 

// (6)function pointer as a return type

int (*ff(int))(int*, int); // is the same as following codes

typedef int (*pf)(int&, int);

pf ff(int); // ff return a pointer to function

 

// (7) example

 int main(){

  cmpFcn pf1;
  cmpFcn pf2 = 0; 
  cmpFcn pf3 = lengthCompare;
  cmpFcn pf4 = &lengthCompare;

  pf = lengthCompare;
  cout << pf << endl;   // 1
  cout << pf1 << endl;  // 0
  cout << pf2 << endl;  // 0
  cout << pf3 << endl;  // 1
  cout << pf4 << endl;  // 1

  return 0;
}

2. There is no conversation between one pointer to function type and another. 

A function pointer must point to the function whose type is exactly the same as this pointer points to.

 

 

 

 

( Most of the code are coming from C++ primer fourth edition  )

C++, function pointer

原文:https://www.cnblogs.com/sarah-zhang/p/12210931.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!