As you can see, a member function is a function that belongs to a class instance and has access to the object's members as well as a pointer-to-self-object this.
Of course, in your scenario, you're gaining access to
m.func(4)
which is a member function declared within a MyCls object instance when writing
func(m, 5);
You're sending an object instance of class MyCls to the function in the global scope (by value, which is something you should examine if that's the way you want to operate) without using it, simply to make sure your concepts are coherent.
To learn about the language's OOP paradigm, I recommend starting with a solid C++ course.