Obiekty typu klasy
Obiekt to typowany region magazynowania w środowisku wykonawczym; oprócz przechowywania informacji o stanie definiuje również zachowanie.Obiekty o typie klasy są definiowane przy użyciu Nazwy klasy.Rozważ następujący fragment kodu:
// 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.
}
Kod powyżej deklaruje klasę (nowy typ) o nazwie Account.Następnie używa tego nowego typu do zdefiniowania obiektu o nazwie CheckingAccount.
Następujące operacje zostały zdefiniowane przez C++ dla obiektów o typie klasy:
Przypisanie.Jeden obiekt można przypisać do innego.Domyślnym zachowaniem tej operacji jest kopiowanie elementu członkowskiego.To zachowanie może być zmodyfikowane przez dostarczanie operatora przypisania zdefiniowanego przez użytkownika.
Inicjalizacja za pomocą konstruktorów kopiujących.
Oto przykłady inicjalizacji za pomocą konstruktorów kopiujących zdefiniowanych przez użytkownika:
Jawne inicjowanie obiektu.Na przykład:
Point myPoint = thatPoint;
deklaruje myPoint jako obiekt typu Point i inicjuje go do wartości thatPoint.
Inicjowanie spowodowane przekazaniem argumentu.Obiekty mogą być przekazywane do funkcji przez wartość lub przez odwołanie.Jeśli są one przekazywane przez wartość, do funkcji przekazywana jest kopia każdego obiektu.Domyślną metodą tworzenia kopii jest kopia elementu członkowskiego; to zachowanie może zostać zmodyfikowane przez dostarczenie konstruktora kopiującego zdefiniowanego przez użytkownika (konstruktor, który przyjmuje pojedynczy argument typu "odwołanie do klasy").
Inicjowanie spowodowane inicjowaniem wartości zwracanych przez funkcje.Obiekty mogą być zwracane z funkcji przez wartość lub przez odwołanie.Domyślną metodą zwracającą obiekt przez wartość jest skopiowanie elementu członkowskiego; to zachowanie może zostać zmodyfikowane przez dostarczenie konstruktora kopiującego zdefiniowanego przez użytkownika.Obiekt zwrócony przez odwołanie (używając wskaźnika lub typów referencyjnych) nie powinien być zarówno automatycznym i lokalnym dla wywoływanej funkcji.Jeśli tak jest, obiekt do którego odwołuje się zwracana wartość zniknie z zakresu zanim będzie mógł być użyty.
Temat Przeciążone operatory wyjaśnia jak przedefiniować inne operatory działające na zasadzie klasy przez klasy.