For example, considering the C#
Unlike function pointers in C or C++, delegates are object-oriented,
type-safe, and secure.source:
http://msdn.microsoft.com/en-us/library/aa288459%28v=vs.71%29.aspx
Now talking about the C++ only, what is the real difference and what is missing from an OO prospective?
Also from another source
Most C++ programmers have never used member function pointers, and
with good reason. They have their own bizarre syntax (the ->* and .*
operators, for example), it’s hard to find accurate information about
them, and most of the things you can do with them could be done better
in some other way. This is a bit scandalous: it’s actually easier for
a compiler writer to implement proper delegates than it is to
implement member function pointers!source:
http://www.codeproject.com/Articles/7150/Member-Function-Pointers-and-the-Fastest-Possible
I find that many programs in C++ uses the ->* syntax, i don’t find that this is bizarre or strange; I don’t get the point about this potential about the delegates and the attack to the pointers.
I think people find it difficult to write them, but they behave like ordinary pointers, if they are NULL then its wrong to execute them. If they are written and used properly then there is nothing wrong with them. I never really had problems with,maybe besides forgetting proper syntax.
In c++11, you can use std::function<> class which is a wrapper for function pointer. You can use it for functions, member functions, functions objects and lambdas.
for example:
or easier (works in VS2010):
ref: http://en.cppreference.com/w/cpp/utility/functional/function