In C++ you don't usually talk in those terms. An object itself can be copyed (deep copy) or moved (transfer all the contents of the objecto to another, leaving the first one empty). A shallow copy is what in C++ we call a reference (kind of), because it's the same object, just with another name
— A reference is just a pointer behind the scenes, just to make programmers lifes easier