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 because the developer has missed off the (), so the compiler does not treat this as a function call. Instead, it treats this as a test of the memory address of the function, and since the function will never be located at a memory address of zero, the comparison will always be true and the message will be printed even if the system state is valid.