Chapter 27. Coping with the Copy Constructor
In This Chapter
Letting C++ make copies of an object
Creating your own copy constructor
Making copies of data members
Avoiding making copies completely
The constructor is a special function that C++ invokes when an object is created in order to allow the class to initialize the object to a legal state. Chapter 25 introduces the concept of the constructor. Chapter 26 demonstrates how to create constructors that take arguments. This chapter concludes the discussion of constructors by examining a particular constructor known as the copy constructor.
Copying an Object
A copy constructor is the constructor that C++ uses to make copies of objects. It carries the name X::X(const X&), where X is the name of the class. That is, it's the constructor of class X that takes as its argument a reference to an object of class X. I know that sounds pretty useless, but let me explain why you need a constructor like that on your team.
Note
A reference argument type like fn(X&) says, "pass a reference to the object" rather than "pass a copy of the object." I discuss reference arguments in Chapter 23.
Think for a minute about the following function call:
void fn(Student s)
{
// ...whatever fn() does...
}
void someOtherFn()
{
Student s;
fn(s);
};Here the function someOtherFn() creates a Student object and passes a copy of that object to fn().
Note
By default, C++ passes objects by value, meaning that it must make a copy of the object to pass to the functions it calls (refer ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access