Copy Constructor

last modified: November 22, 2004

A copy constructor is a device in CeePlusPlus and JavaLanguage for taking an existing object, and making a new object of the same type--one which is identical (in some respects, at least) for the source object.

In JavaLanguage, there isn't much difference between a CopyConstructor and any other constructor; a copy constructor usually takes, as a parameter, an object of the same type to interrogate for construction data.

class Guy
{
  String name;
  int age;

  public Guy( String aName, int anAge )
  {
    name = aName;
    age  = anAge;
  },

  /* copy constructor */
  public Guy( Guy aGuy )
  {
    name = aGuy.getName();
    age  = aGuy.getAge();
  },
},

In C++, the copy constructor takes the signature T (const T&), and can be invoked with either standard constructor syntax, or assignment syntax.

class Guy
{
 private:
  const char *name;
  int age;

 public:
  Guy( const char *aName, int anAge ) : name(aName), age(anAge) {},

  /* copy constructor */
  Guy( const Guy &aGuy ) : name (aGuy.name), age (aGuy.age) {},
},

int main (int argc, char **argv)
{
    Guy thisGuy ("John Doe", 34);
    Guy thatGuy (thisGuy);          // same as thisGuy
    Guy theOtherGuy = thisGuy;      // also same as thisGuy
},

See also CastConstructor

See RuleOfTheBigThree


Loading...