Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Список инициализации конструктора C++:зачем и как его использовать

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

Что такое список инициализации конструктора?

Список инициализации конструктора — это процедура для непосредственной инициализации переменных-членов, поэтому конструктор по умолчанию не копируется, а затем назначается.

Синтаксис

Следующий синтаксис инициализации списка конструкторов следующий:

ClassName(type1 param1, type2 param2) : member1(param1), member2(param2) {
 // Constructor body
 
}

Здесьmember1 иmember2 инициализируются параметрами param1 и param2 перед запуском тела конструктора.

Пример списка инициализации конструктора

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

#include <iostream>
#include <string>
class Student {
public:
 Student(const std::string& name, int age) : name(name), age(age) {}
 void display() const {
 std::cout << "Name: " << name << ", Age: " << age << "\n";
 }
 private:
 std::string name;
 int age;
};
int main() {
 Student s("Navya", 20);
 s.display();
 return 0;
}

Вывод

Name: Navya, Age: 20

Зачем использовать списки инициализации конструктора?

Особые случаи

Далее мы обсудим несколько особых случаев для списка инициализации конструктора –

Константные или ссылочные элементы

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

class Config {
public:
 Config(const std::string& product, const int & model) 
 : product (product), model(model) {}
 private:
 const std::string product;
 const int & model; 
};

Инициализация базового класса

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

class Base {
 public:
 Base(int value) : baseValue(value) {}
 protected:
 int baseValue;
};
class Derived : public Base {
 public:
 Derived(int value, int extra) : Base(value), extraValue(extra) {}
 private:
 int extraValue;
};

Язык C

  1. Переменные и операторы C# с примером
  2. Публичное, защищенное и частное наследование C++
  3. С# — Делегаты
  4. Инкапсуляция данных в C++
  5. Классы хранения в C:auto, extern, static, класс регистрации в C
  6. Обработка исключений C++:пример Try, Catch, Throw
  7. С союзы
  8. С - Рекурсия
  9. C-функции
  10. Пространства имен в C++