the class cVector has member variables x and y. the function you're referring to is overloading the '+' operator. the purpose of this is to be able to add 2 objects (instances/variables) of the class cVector
a temporary cVector object is created because you don't want to modify the calling object or the object that is accepted as an argument, you only want to return the sum of the two as defined by the overloading of the operator.
temp.x accesses the member variable x of the cVector object temp. temp.y for the member variable y. x and y by themselves don't have to be accessed using the dot operator because they refer to the member variables of the object calling the operator+() function. temp and param are other objects of the cVector class, but are not making the function call, so their member variables have to be accessed using the dot operator
if you look in the main function, you'll see c = a + b;. this is where the overloaded + operator is used. without the function, the compiler has no idea how to add two objects of type cVector.
let us know if this isn't clear
ps: another way to think of that line of code i quoted is to think of it like a function call like this: c = a.operator+(b);