Am I leaking memory in the code snippet shown below?

```
MySet.cpp

MySet *MySet::unionMS(MySet& newSet)
{
    MySet *resultSet = new MySet(*this);
    [...] 
    // logic goes here
    [...]
    return resultSet;
}

```

And in 

```
int main(){
     [...]
     MySet set3;
     set3 = *set1.unionMS(set2);
 }

```

So when `resultSet` leaves the scope pointer variable is destroyed. However, when happens to the underlying object? Is it being copied to the caller and then destroyed?