Partilhar via


Inicializando objetos de membro

As classes podem conter objetos do membro do tipo de classe, mas para garantir que os requisitos de inicialização para os objetos de membro sejam atendidos, é necessário atender a uma das seguintes condições:

  • A classe de objeto contido não requer construtores.

  • A classe de objeto contido tem um construtor padrão acessível.

  • Todos os construtores da classe recipiente inicializam explicitamente o objeto contido.

O exemplo a seguir mostra como realizar essa inicialização:

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

A classe Rect, mostrada no exemplo anterior, contém dois objetos membros da classe Point. O construtor inicializa explicitamente os objetos _topleft e _bottomright. Observe que o sinal de dois pontos aparece após o parêntese de fechamento do construtor (na definição). O sinal de dois pontos é seguido pelos nomes e os argumentos do membro, com os quais será realizada a inicialização dos objetos do tipo Point.

Dica

A ordem na qual os inicializadores de membro são especificados no construtor não afeta a ordem na qual os membros são construídos; os membros são construídos na ordem em que são declarados na classe.

A referência e os objetos do membro const devem ser inicializados usando a sintaxe de inicialização do membro mostrada na seção da gramática em Inicializando bases e membros. Não há outra maneira de inicializar esses objetos.

Consulte também

Referência

Inicializando bases e membros