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 because the developer has missed off the (), so the compiler does not treat this as a function call. Instead, it treats ...