I recently started learning C++ and I can't understand the following code (it's a copy constructor, deep copy):
Car::Car(const Car &c){
this->_make = new string(*(c._make));
this->_model = new string(*(c._model));
this->_year = new int(*(c._year));
}
Here, we are passing by reference so why are we adding the "*" here: *(c._make), shouldn't it just be c._make, as passing by reference already gives the value, what does the * do in this case?