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

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

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

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

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

Синтаксис

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

ClassName(type1 param1, type2 param2) : member1(param1), member2(param2) {
    // Тело конструктора
}

Здесь 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. Освоение структур в C: определение, переменные, доступ и продвинутые примеры
  4. Мастерство многомерных массивов в C: 2D и 3D массивы подробно
  5. Установка Visual Studio 2019 Community Edition для C#-разработки на Windows
  6. Интерфейсы в C#: контракты для надежного ООП
  7. Освоение указателей на символы и работы с функциями в языке C
  8. Динамическая память в C++: стек против кучи
  9. Четыре проверенных паттерна пользовательских функций в C
  10. Изучение C программирования: полное PDF-руководство для начинающих