C++ konstruktory


Konstruktéři

Konstruktor v C++ je speciální metoda , která se automaticky volá, když je vytvořen objekt třídy.

Chcete-li vytvořit konstruktor, použijte stejný název jako třída následovaný závorkami ():

Příklad

class MyClass {     // The class
  public:           // Access specifier
    MyClass() {     // Constructor
      cout << "Hello World!";
    }
};

int main() {
  MyClass myObj;    // Create an object of MyClass (this will call the constructor)
  return 0;
}

Poznámka: Konstruktor má stejný název jako třída, je to vždy publica nemá žádnou návratovou hodnotu.


Parametry konstruktoru

Konstruktory mohou také přebírat parametry (stejně jako běžné funkce), které mohou být užitečné pro nastavení počátečních hodnot atributů.

Následující třída má atributy brand, modela yeara konstruktor s různými parametry. Uvnitř konstruktoru nastavíme atributy rovné parametrům konstruktoru ( brand=xatd.). Když zavoláme konstruktor (vytvořením objektu třídy), předáme konstruktoru parametry, které nastaví hodnotu odpovídajících atributů na stejnou:

Příklad

class Car {        // The class
  public:          // Access specifier
    string brand;  // Attribute
    string model;  // Attribute
    int year;      // Attribute
    Car(string x, string y, int z) { // Constructor with parameters
      brand = x;
      model = y;
      year = z;
    }
};

int main() {
  // Create Car objects and call the constructor with different values
  Car carObj1("BMW", "X5", 1999);
  Car carObj2("Ford", "Mustang", 1969);

  // Print values
  cout << carObj1.brand << " " << carObj1.model << " " << carObj1.year << "\n";
  cout << carObj2.brand << " " << carObj2.model << " " << carObj2.year << "\n";
  return 0;
}

Stejně jako funkce mohou být konstruktory definovány mimo třídu. Nejprve deklarujte konstruktor uvnitř třídy a poté jej definujte mimo třídu zadáním názvu třídy, následovaného :: operátorem rozlišení rozsahu, následovaným názvem konstruktoru (který je stejný jako třída):

Příklad

class Car {        // The class
  public:          // Access specifier
    string brand;  // Attribute
    string model;  // Attribute
    int year;      // Attribute
    Car(string x, string y, int z); // Constructor declaration
};

// Constructor definition outside the class
Car::Car(string x, string y, int z) {
  brand = x;
  model = y;
  year = z;
}

int main() {
  // Create Car objects and call the constructor with different values
  Car carObj1("BMW", "X5", 1999);
  Car carObj2("Ford", "Mustang", 1969);

  // Print values
  cout << carObj1.brand << " " << carObj1.model << " " << carObj1.year << "\n";
  cout << carObj2.brand << " " << carObj2.model << " " << carObj2.year << "\n";
  return 0;
}