Supraîncărcarea constructorilor

O clasă poate avea mai mulți constructori cu parametri diferiți — se selectează automat în funcție de argumentele din cod.

class Dreptunghi {
public:
  int l, lat;

  Dreptunghi() : l(1), lat(1) {}           // implicit
  Dreptunghi(int latura) : l(latura), lat(latura) {} // pătrat
  Dreptunghi(int l, int lat) : l(l), lat(lat) {}     // general

  int arie() { return l * lat; }
};

Dreptunghi d1;         // 1x1
Dreptunghi d2(5);      // 5x5
Dreptunghi d3(3, 7);   // 3x7

Constructor de copiere

class MyClass {
public:
  int val;
  MyClass(int v) : val(v) {}
  MyClass(const MyClass& other) : val(other.val) {} // copy constructor
};

MyClass a(10);
MyClass b = a;  // apelează copy constructor