Functions are the building blocks of C++ and are used to reduce program size by calling reusable code in different places. Functions can return values using the return statement. Function prototypes provide interface details like data types and arguments to the compiler. Parameters can be passed by reference, allowing the calling function to modify the original argument. Inline and recursive functions are also discussed. Classes are user-defined data types that contain data members and member functions. Member functions can be defined inside or outside the class.