Functions in C++ can be overloaded, have default arguments, be inline, and be passed by reference or returned by reference. Inline functions avoid function call overhead by expanding the function body inline. Default arguments allow optional arguments in function calls. Function overloading relies on arguments to determine the correct implementation. Arguments can be passed by reference to allow modification of original variables or returned by reference.