Function overloading is when multiple functions within the same class have the same method name but different parameter list, while function overriding is when two functions have the same name and parameter in both the parent class and the child class in inheritance.