You points look sensible, and I cannot figure out what your interviewer wanted to hear from you.
But, as far as I know, enabling a uniform syntax for copy constructors and assignment operators was a significant reason why Stroustrup introduced references. For example, let's assume we have no references in C++ and we want to do some copy-construction, passing an argument by pointer:
class MyClass {
// Copy ctor and assignment operator are declared
// like this in our referenceless "C with classes" language:
MyClass(const MyClass* const);
MyClass* operator=(const MyClass* const);
};
MyClass a, b, c;
//Let's copy-construct:
MyClass d = &a; // Dereferencing looks ugly.
//Let's assign:
a = &b; // Dereferencing again.
// Even worse example:
a = b = c = &d; // Only the last variable should be dereferenced.
a = b = &c; // Awfully inhomogeneous code.
/*
The above line is equivalent to a = (b = &c),
where (b = &c) returns a pointer, so we don't need to
dereference the value passed to assignment operator of a.
*/
And this is obviously not how built-in types work:
int a, b, c;
int d = a;
a = b = c = d;
So references were introduced to resolve these inhomogeneities.
UPD
For an authoritative proof of this point, please refer to the § 3.7 of Stroustrup's The Design and Evolution of C++. Unfortunately, I have no English text of the book, but the first sentence in the chapter is (back-translated into English):
References were introduced basically for operator overloading support.
And in the next few pages Stroustrup covers the topic in-depth.