text: Function Overloading: This means having 2 or more functions in the same locality with same names but different NUMBER or TYPES of parameters.\n\nEX:\nvoid SetAString(const char* val) {m_someString = val;}\nvoid SetAString(const std::string& val) {m_someString = val;}\netc..\nthe functions are distiguinished based on the parameters.\n\nFunction Overriding: Two functions are said to be overidden  when they share the same name and/or even the same parameters(Number and Type) but are part of diff classes, one of which is inhereted from other.\n\nEx:\nclass B\n{\nvirtual void SaySomething(){::MessageBox(NULL, "HELLO", NULL, MB_OK);}\n\n}\n\n\nclass A : public class B\n{\nvirtual void SaySomething(){::MessageBox(NULL, "NO", NULL, MB_OK);}\n}\n\nthe result of calling SaySomething depends on the subtype of\nthe object\n\nIn short: Overloading is a method that allows defining multiple member functions with the same name but different signatures. The compiler will pick the correct function based on the signature. Overriding is a method that allows the derived class to redefine the behavior of member functions which the derived class inherits from a base class. The signatures of both base class member function and derived class member function are the same; however, the implementation and, therefore, the behavior will differ.