initializer lists c
Ознайомтесь із усіма списками ініціалізаторів на C ++ із детальними прикладами.
C ++ використовує списки ініціалізаторів для ініціалізації членів даних до їх значень.
Списки ініціалізаторів в основному використовуються в конкретних ситуаціях, коли неможливо ініціалізувати значення в тілі конструктора.
що використовувати замість ccleaner
=> Клацніть тут для безкоштовного курсу C ++.
Списки ініціалізаторів на C ++
Загальний синтаксис списку ініціалізатора:
constructorName(type value1, type value2):datamember(value1), datamember(value2) { //constructor code }
Деякі з цих ситуацій, коли використовуються списки ініціалізаторів, перелічені нижче:
# 1) Конструктор за замовчуванням не передбачений для класу об’єктів-членів.
Коли у нас є інший об’єкт класу як члена класу, а клас цього об’єкта не має конструктора за замовчуванням, тоді ми ініціалізуємо цей об’єкт-член даних за допомогою списку ініціалізаторів.
Це показано в наступній програмі.
#include using namespace std; class A { int i; public: A(int ); }; A::A(int val) { i = val; cout << 'Constructor ::A ; i = ' << i << endl; } class B { A a; public: B(int ); }; B::B(int val):a(val) { cout << 'Constructor :: B'; } int main() { B obj(10); return 0; }
Вихід:
Конструктор :: A; i = 10
Конструктор :: B
У наведеній вище програмі об’єктом класу A є член даних класу B. У класі A ми маємо параметризований конструктор, але не конструктор за замовчуванням. Таким чином, нам потрібно використовувати список ініціалізаторів класу B, щоб створити об'єкт класу A.
# 2) Ініціалізація C наші члени даних.
Оскільки члени даних const можуть бути ініціалізовані лише один раз, ми ініціалізуємо їх за допомогою списку ініціалізаторів.
Ми демонструємо це на наступному прикладі.
#include using namespace std; class sample { private: const int val; public: sample(int val):val(val) { cout << 'Value is ' << val; } }; int main() { sample obj(10); }
Вихід:
Значення 10
У наведеній вище програмі ми маємо const як член даних. Якщо нам потрібно ініціалізувати цей елемент const значенням, тоді ми робимо це за допомогою списку ініціалізатора, як показано.
# 3) Для ініціалізації еталонних типів даних.
Подібно до констант посилання незмінні. Отже, коли нам потрібно ініціалізувати члени даних посилального типу, ми використовуємо списки ініціалізаторів.
У наступній програмі ми ініціалізуємо еталонний елемент даних за допомогою списку ініціалізаторів.
#include using namespace std; class sample { private: int &ref_val; public: sample(int &ref_val):ref_val(ref_val) { cout << 'Value is ' << ref_val; } }; int main() { int ref=10; sample obj(ref); return 0; }
Вихід:
Значення 10
У цій програмі у нас є посилання як члена даних, і ми ініціалізуємо його за допомогою списку ініціалізаторів.
# 4) Коли ім'я члена та параметр мають однакове ім'я.
Питання та відповіді співбесіди тестувальника забезпечення якості
Коли імена членів класу мають бути ініціалізовані параметрами, і ці параметри мають ті самі імена, що імена членів, ми використовуємо список ініціалізаторів. У попередніх темах ми використовували цей покажчик для тієї ж ситуації. Другий варіант - список ініціалізатора.
Ми змінили наведений вище Приклад за допомогою цього вказівника, щоб використовувати список ініціалізаторів у наступній програмі.
#include using namespace std; class Sample { private: int num; char ch; public: Sample(int num,char ch):num(num),ch(ch){ cout<<'num = '< Вихід:
число = 100
ch = A

У цій програмі ми передаємо параметри для ініціалізації членів даних з однаковими іменами. У цьому випадку ми використовуємо для цього список ініціалізатора.
# 5) Для підвищення продуктивності
Щоразу, коли ми ініціалізуємо члени даних у тілі конструктора, тимчасовий об’єкт створюється для члена даних при призначенні значень. Після завершення призначення цей тимчасовий об’єкт видаляється. Це насправді накладні витрати.
Якщо ми використовуємо список ініціалізаторів, з іншого боку, конструктор копій використовується для присвоєння значень. Це значно покращує продуктивність.
Висновок
Таким чином, у цьому посібнику ми дізналися про списки ініціалізаторів, а також про багато ситуацій, коли нам потрібно використовувати їх у програмуванні на C ++.
Хоча нам не потрібно використовувати список ініціалізатора, коли цих ситуацій немає, ми завжди можемо використовувати їх для покращення продуктивності програми.
У нашому майбутньому уроці ми детально обговоримо функції друзів у C ++.
=> Дивіться тут, щоб ознайомитися з повним списком підручників з C ++.
Рекомендована література