Udostępnij za pośrednictwem


Inicjowanie obiektu elementu członkowskiego

Klasy mogą zawierać obiekty członkowskie typu klasy, ale w celu zapewnienia, że spełnione są wymagania inicjowania dla obiektów członkowskich, jeden z następujących warunków musi być spełniony:

  • Klasa obiektu zawieranego wymaga braku konstruktora.

  • Klasa obiektu zawieranego ma dostępny domyślny konstruktor.

  • Wszystkie konstruktory zawieranej klasy jawnie inicjują zawierany obiekt.

Poniższy przykład pokazuje sposób wykonywania takiego inicjowania:

// spec1_initializing_member_objects.cpp
// Declare a class Point.
class Point
{
public:
    Point( int x, int y ) { _x = x; _y = y; }
private:
    int _x, _y;
};

// Declare a rectangle class that contains objects of type Point.
class Rect
{
public:
    Rect( int x1, int y1, int x2, int y2 );
private:
    Point _topleft, _bottomright;
};

//  Define the constructor for class Rect. This constructor
//   explicitly initializes the objects of type Point.
Rect::Rect( int x1, int y1, int x2, int y2 ) :
_topleft( x1, y1 ), _bottomright( x2, y2 )
{
}

int main()
{
}

Klasa Rect, pokazana w poprzednim przykładzie zawiera dwa obiekty członkowskie klasy Point.Jej konstruktor jawnie inicjuje obiekty _topleft i _bottomright.Należy zauważyć, że dwukropek następuje po nawiasie zamykającym konstruktora (w definicji).Po dwukropku następują nazwy elementów członkowskich i argumenty, za pomocą których obiekty typu Point mają być zainicjowane.

[!UWAGA]

Kolejność, w której inicjalizatory elementów członkowskich są określane w konstruktorze nie wpływają na kolejność, w której elementy członkowskie są wykonane; elementy członkowskie są budowane w kolejności, w której są zadeklarowane w klasie.

Odwołanie i obiekty członkowskie const muszą zostać zainicjowane przy użyciu składni inicjowania elementów członkowskich pokazanej w sekcji Gramatyka w Inicjowanie baz i elementów członkowskich.Nie istnieje inny sposób inicjowania tych obiektów.

Zobacz też

Informacje

Inicjowanie baz i elementów członkowskich