the + operator is overload to return a Cars object.
When this is call...what happens first ? It looks like my code is trying to create a car1 object first, because it errors with 'no matching function'.
Although it's using the '=' character, this is actually an initialisation, so it's the same as:
Cars car1(car2 + car3);
Assuming car2 and car3 are of type Cars, then the result of car2 + car3 should be of type Cars. This means that car1 is created using the copy constructor of Cars.