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 public
a 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
, model
a year
a konstruktor s různými parametry. Uvnitř konstruktoru nastavíme atributy rovné parametrům konstruktoru ( brand=x
atd.). 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;
}