Списки инициализаторов в C++

Списки инициализаторовC++ использует списки инициализаторов для инициализации членов данных их значениями.

Списки инициализаторов в основном используются в определенных ситуациях, когда невозможно инициализировать значения в теле конструктора.

Общий синтаксис списка инициализаторов:

constructorName(type value1, type value2):datamember(value1), datamember(value2)
{
//код конструктора
}

Ситуации, в которых используются списки инициализаторов

1) Конструктор по умолчанию не предоставляется для класса объектов-членов

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

Это показано в программе ниже:

Вывод данных:

Constructor ::A ; i = 10
Constructor :: B

В приведенной выше программе объект класса A является членом данных класса B. В классе A у нас есть параметризованный конструктор, но нет конструктора по умолчанию. Таким образом, нам нужно использовать список инициализаторов в классе B, чтобы создать объект класса A.

2) Инициализация элементов данных константы

Поскольку константные элементы данных могут быть инициализированы только один раз, мы инициализируем их с помощью списка инициализаторов.

Читать также:  Полиморфизм в С++

Рассмотрим это в примере ниже:

Вывод данных:

Value is 10

В приведенной выше программе у нас есть константа в качестве члена данных. Если нам нужно инициализировать этот константный член значением, мы делаем это, используя список инициализаторов, как показано в программе.

3) Инициализация ссылочных типов данных

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

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

Вывод данных:

Value is 10

В этой программе у нас есть ссылка в качестве члена данных, и мы инициализируем ее, используя список инициализаторов.

4) Имя элемента и параметр имеют одно и то же имя

Когда имена членов класса должны быть инициализированы параметрами, и эти параметры имеют те же имена, что и имена членов, мы используем список инициализаторов. В наших предыдущих статьях мы использовали указатель this для той же ситуации. Второй вариант — это список инициализаторов.

Читать также:  Безопасность реализации на языке Java

Мы изменили приведенный выше пример, с помощью указателя this:

Вывод данных:

num = 100
ch = A

В этой программе мы передаем параметры для инициализации элементов данных с одинаковыми именами. В этом случае, мы используем для этой цели список инициализаторов.

5) Повышение производительности

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

Но, если мы используем список инициализаторов, конструктор копирования используется для присвоения значений. Это значительно повышает производительность.

Итог

Таким образом, в этой статье мы рассказали вам о списках инициализаторов, а также о многих ситуациях, в которых нужно их использовать в программировании на C++.

Хотя нам не нужно использовать список инициализаторов, когда таких ситуаций нет, но мы всегда можем использовать их для повышения производительности программы.

В нашей следующей статье мы подробно обсудим дружественные функции в C++, и покажем их работу на примерах.

С Уважением, МониторБанк

Добавить комментарий