Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
34 / 20 / 4
Регистрация: 07.03.2015
Сообщений: 325
1

Инициализация полей в структуре через его конструктор

16.12.2018, 11:12. Показов 1088. Ответов 6
Метки нет (Все метки)

Необходимо инициализировать массив в структуре нулями если будет вызывается конструктор структуры с параметрами, а в случае вызова без параметров инициализация массива не нужна.
Как правильно оформить структуру по первому приведенному примеру, или по второму?
И я так подозреваю, что в первом примере массив всегда будет инициализирован нулями, я прав?
C++
1
2
3
4
5
6
7
8
9
10
11
struct Fakels {
    int X;
    char Name[N] = {0};
 
    Fakels() {}
 
    Fakels(int x1, char* name) {
        X = x;
        strncpy_s(Name, name, _TRUNCATE);
    }
 };
C++
1
2
3
4
5
6
7
8
9
10
struct Fakels {
    int X;
    char Name[N];
 
    Fakels() {}
 
    Fakels(int x, char* name) : X(x), Name {0} {
        strncpy_s(Name, name, _TRUNCATE);
    }
 };
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.12.2018, 11:12
Ответы с готовыми решениями:

Инициализация полей в структуре
#include <iostream> #include <string.h> #include <stdio.h> #include <conio.h> #include...

Инициализация массива через конструктор
Есть код : class test { private: int x; public: test() : x{ 0, 0 } {} }; Не понимаю...

Инициализация массива объектов через конструктор
class some { public: some(){} some(int b):a(b){} void Set(int b){a=b;} private: int...

Инициализация массива через конструктор. Вопрос.
Всем привет. Есть скудная вытяжка из методички: "Массив объектов В случае, когда возникает...

__________________

Записывайтесь на профессиональные курсы C++ разработчиков
6
Эксперт С++
1591 / 923 / 777
Регистрация: 06.02.2016
Сообщений: 2,411
Записей в блоге: 29
16.12.2018, 11:32 2
Цитата Сообщение от Fakels Посмотреть сообщение
И я так подозреваю, что в первом примере массив всегда будет инициализирован нулями
Ага
1
34 / 20 / 4
Регистрация: 07.03.2015
Сообщений: 325
16.12.2018, 11:44  [ТС] 3
А во втором примере сначало будет выполнена инициализация, а потом само "тело" конструктора? А то я дуб в этом деле)
0
Эксперт С++
1591 / 923 / 777
Регистрация: 06.02.2016
Сообщений: 2,411
Записей в блоге: 29
16.12.2018, 11:48 4
Цитата Сообщение от Fakels Посмотреть сообщение
А во втором примере сначало будет выполнена инициализация
Во втором примере массив будет содержать "мусор", то есть его содержимое undefined. Потом конструктор всё перезапишет
0
34 / 20 / 4
Регистрация: 07.03.2015
Сообщений: 325
16.12.2018, 12:08  [ТС] 5
Тогда ничерта не понял, а если убрать strncpy_s то что массив не инициализируется нулями? И накой черт тогда придумали инициализаторы которые идут после двоеточия?
0
Эксперт С++
1591 / 923 / 777
Регистрация: 06.02.2016
Сообщений: 2,411
Записей в блоге: 29
16.12.2018, 12:10 6
Лучший ответ Сообщение было отмечено Fakels как решение

Решение

Цитата Сообщение от Peoples Посмотреть сообщение
Потом конструктор всё перезапишет
Под этим я подразумевал занулить Name и X дать значение x. Просто изначально, до конструктора будет undefined
1
34 / 20 / 4
Регистрация: 07.03.2015
Сообщений: 325
16.12.2018, 12:16  [ТС] 7
Ну то что до конструктора там будет мусор это я знаю, меня интересовал второй тип конструктора, как он будет действовать.
Ладненько спс.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.12.2018, 12:16

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Инициализация объектов через конструктор(объясните в чём ошибка)
Вот программа! #include <iostream> #include <string> using namespace std; class GradeBook {...

Инициализация полей класса через vector<>
Здравствуйте, можете подсказать как правильно инициализировать поля класса, вот например есть класс...

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

Значение полей класса через метод и конструктор
Добрый день! Есть задача Сделал класс через конструктор, аргументы прописаны заранее....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.