Function pointers
When an application is run, the functions it will call will exist in memory somewhere. This means that you can get the address of a function. C++ allows you to use the function call operator (a pair of parentheses enclosing the parameters ()
) to call a function through a function pointer.
Remember the parentheses!
First, a simple example of how function pointers can cause difficult to notice bugs in your code. A global function called get_status
performs various validation actions to determine if the state of the system is valid. The function returns a value of zero to mean that the system state is valid and values over zero are error codes:
// values over zero are error codes int get_status() { int status = 0; // code that checks the state of data is valid return status; }
The code could be called like this:
if (get_status > 0) { cout << "system state is invalid" << endl; }
This is an error...