Objekty typu třídy
Objekt je oblastí úložiště s daným typem v prostředí spouštění. Kromě zachování informací o stavu objekt definuje také chování.Objekty typu třídy jsou definovány pomocí názvu třídy.Považte následující fragment kódu:
// class_type_objects.cpp
class Account
{
public:
Account() // Default constructor
{
}
Account( double ); // Construct from double.
double& Deposit( double );
double& Withdraw( double, int );
};
int main()
{
Account CheckingAccount; // Define object of class type.
}
Předchozí kód deklaruje třídy (nový typ) s názvem Account.Poté tento nový typ používá k definici objektu s názvem CheckingAccount.
Pro objekty typu třídy jsou v jazyce C++ definovány následující operace:
Přiřazení.Jeden objekt lze přiřadit jinému.Výchozím chováním této operace je kopírování členů.Toto chování lze upravit poskytnutím uživatelem definovaných operátorů přiřazení.
Inicializace pomocí kopírovacích konstruktorů.
Následující kód jsou příklady inicializací pomocí uživatelem definovaných kopírovacích konstruktorů:
Explicitní inicializace objektu.Příklad:
Point myPoint = thatPoint;
deklaruje objekt myPoint jako objekt typu Point a inicializuje jej na hodnotu thatPoint.
Inicializace vyvolaná předáním jako argument.Objekty lze do funkcí předat hodnotou nebo referencí.Jsou-li předány hodnotou, je do funkce předána kopie každého objektu.Výchozí metodou pro vytvoření kopie je kopírování členů. To lze upravit poskytnutím uživatelem definovaného kopírovacího konstruktoru (konstruktoru, který přijímá jediný argument typu "reference na třídu").
Inicializace vyvolaná inicializací hodnot vrácených funkcemi.Objekty lze z funkcí vracet hodnotou nebo referencí.Výchozí metodou vracení objektů hodnotou je kopírování členů. To lze upravit poskytnutím uživatelem definovaného kopírovacího konstruktoru.Objekt vrácený referencí (pomocí typů ukazatele nebo reference) by neměl být objektem automatickým a zároveň místním pro volanou funkci.Pokud je, bude se objekt odkazovaný návratovou hodnotou před svým použitím nacházet mimo rozsah.
Téma Přetížené operátory vysvětluje, jak předefinovat ostatní operátory pro jednotlivé třídy.