Sdílet prostřednictvím


Inicializace objektů členů

Třídy mohou obsahovat členské objekty typu třídy, ale pro ujištění se, že jsou splněny požadavky inicializace členských objektů, musí být splněna jedna z následujících podmínek:

  • Třída obsaženého objektu nevyžaduje žádný konstruktor.

  • Třída obsaženého objektu má dispozici výchozí konstruktor.

  • Všechny konstruktory obsažené třídy inicializují obsažený objekt.

Následující příklad ukazuje, jak tuto inicializaci provést:

// 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()
{
}

Třída Rect uvedená v předchozím příkladu obsahuje dva členské objekty třídy Point.Její konstruktor explicitně inicializuje objekty _topleft a _bottomright.Všimněte si, že za uzavírací závorkou konstruktoru (v definici) následuje dvojtečka.Dvojtečka je následována názvy členů a argumenty, se kterými lze inicializovat objekty typu Point.

[!POZNÁMKA]

Pořadí, ve kterém jsou určeny inicializátory členů v konstruktoru nemá vliv na pořadí, ve kterém jsou členové vytvořeni. Členové jsou vytvořeni v pořadí, ve kterém jsou deklarováni ve třídě.

Odkaz a členské objekty const musí být inicializováni pomocí syntaxe členské inicializace v části gramatiky v Inicializace základních tříd a členů.Neexistuje jiný způsob, jak inicializovat objekty.

Viz také

Referenční dokumentace

Inicializace základů a členů