بسم الله الرحمن الرحيم, أود أن اطرح موضوع ممتع و مهم و مخفي عن كثير من المبرمجين و هو "المؤشرات إلى دوال" أو ما يسمى "Function Pointers" لن أطيل عليكم بالمقدمة, لنبدأ بالتوضيحات, لنفرض أن لدينا الدوال الاتية بداخل برنامج ما:
float Plus (float a, float b) { return a+b; }float Minus (float a, float b) { return a-b; }float Multiply (float a, float b) { return a*b; }float Divide (float a, float b) { return a/b; }
float Switch(float a, float b, char opCode){ float result; switch(opCode) // execute operation { case '+' : result = Plus (a, b); break; case '-' : result = Minus (a, b); break; case '*' : result = Multiply(a, b); break; case '/' : result = Divide (a, b); break; } return result;}
void main(){ cout << Switch(10, 20, '+') << endl; cout << Switch(10, 20, '*') << endl;}
Instead of Switch(10, 20, '+')Can we do Switch(10, 20, Plus)
float Plus (float a, float b) { return a+b; }
typedef float (* PF) (float a, float b)
void main(){ PF my_function; my_function = Divide; cout << my_function(10, 20) << endl; cout << (* my_function)(10, 20) << endl;}
cout << my_function(10, 20) << endl;
cout << (* my_function)(10, 20) << endl;