Suppose you use the String
class, or, for that matter, the standard string
class as a type for class members:
class Magazine
{
private:
String title;
string publisher;
...
};
String
and string
both use dynamic memory allocation. Does that mean you need to write a copy constructor and assignment operator for the Magazine
class? No—at least not in itself. The default memberwise copying and assignment behavior does have some smarts. If you copy or assign one Magazine
object to another, memberwise copying uses the copy constructors and assignment operators defined for the member types. That is, the String
copy constructor will be used to copy the title
member from one Magazine
object to another, the String
assignment operator will be used to assign the title
member of one Magazine
object to another, and so on. Things get more complicated, however, if the Magazine
class needs a copy constructor and assignment operator for some other class member. In that case, those functions have to call the String
and string
copy constructors and assignment operators explicitly. But that’s a tale for Chapter 13, “Class Inheritance.”
When a member function or standalone function returns an object, you have choices. The function could return a reference to an object, a constant reference to an object, an object, or a constant object. By now, you’ve seen examples of all but the last, so it’s a good time to review these options.
18.117.138.178