Поделиться через


Инициализация объектов элемента

Классы могут содержать объекты члена типа класса, но убедиться, что удовлетворяются требования инициализации для объектов члена, необходимо, чтобы выполнялось одно из следующих условий:

  • Класс, которые содержат объекта не требует конструктора.

  • Класс, которые содержат доступные объекта имеет конструктор по умолчанию.

  • Все конструкторы инициализируют, содержащий типа явно внутренний объект.

В следующем примере показано, как выполнить ту инициализация:

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

Rect класс, показанный в предыдущем примере, содержащий 2 объекта член класса Point.Явно инициализирует его конструктор объектов _topleft и _bottomright.Обратите внимание, что двоеточие после закрывающей круглой скобкой (в определении конструктора).Двоеточие следует именами и аргументами, с которыми инициализировать объекты типа Point.

ПримечаниеПримечание

Порядок, в котором заданы инициализаторы элементов в конструкторе не влияет на порядок, в котором элементы строятся; элементы создаются в порядке, в котором они объявлены в классе.

Ссылка и Const объекты элемента должны быть инициализированы с использованием синтаксиса инициализации членов, показанный в разделе грамматики in Инициализация базового и элементы.Никакой другой способ инициализации этих объектов.

См. также

Ссылки

Инициализация базового и элементы