С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
5 / 5 / 1
Регистрация: 09.09.2012
Сообщений: 227

Конструктор класса

04.02.2013, 04:04. Показов 863. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо для данного класса

C++
1
2
3
4
5
6
7
8
9
10
11
class sequence
{
public:
typedef double value_type;
typedef std::size_t size_type;
static const size_type CAPACITY = 30;
...
private:
value_type data[CAPACITY];
size_type used;
};
Ответить на вопрос:
The sequence's constructor sets used to zero, but does not place any values in the data array. Why?


A) Integer arrays are automatically initialized to zero.

B) The first activation of insert or attach initializes the entire array.

C) The array initialization was part of the project that was left to the student.

D) The programmer who uses the sequence is responsible for initializing the array.

E) When a sequence is first created, none of the array is being used.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.02.2013, 04:04
Ответы с готовыми решениями:

Конструктор класса не видит конструктор по умолчанию другого класса
Ошибка, естественно, в Classes.cpp, в строке 20. Ругается, что у класса TailNode нет конструктора по умолчанию, хотя он там, конечно, есть....

Конструктор класса, конструктор копирования запускается не тот который нужен
Есть такой конструктор: Neuron::Neuron(int iType_activation_funk) { this->iType_act = iType_activation_funk; switch...

Конструктор производного класса требует конструктор предка
Выдаёт вот такую вот ошибку: no matching function for call to 'Cube::Cube()' class Cube { protected: int magInt; bool...

14
 Аватар для Пёс
229 / 76 / 9
Регистрация: 03.02.2013
Сообщений: 311
04.02.2013, 04:06
Если Вам не сложно, переведите на русский язык.
0
 Аватар для Venzo
127 / 125 / 16
Регистрация: 03.07.2011
Сообщений: 354
04.02.2013, 04:18
Конструктор sequence изменяет used на 0, но не помещает значения в массив. Почему?
Целочисленные массивы автоматически инициализируются 0.
Первая вставка или (прикрепление?) инициализирует весь массив
Инициализация - часть проекта, оставленная для реализации студентом
Программист, использующий sequence, отвечает за инициализацию массива
Когда sequence создается (в первый раз?), ничего из массива не используется.

как-то так, но англ. я знаю не очень)
1
 Аватар для abit
868 / 527 / 148
Регистрация: 03.02.2013
Сообщений: 1,845
04.02.2013, 04:20
ответ A
why?
потому что в данном классе не определён конструктор по умолчанию, соответственно компилятор синтезирует его за неумелого программиста, а там правила гласят, что он должен обнулить все элементы базовых типов (int к ним относится)

могу ошибаться, т.к. не эксперт, сейчас ещё подумаю... но сходу бы ответил так
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
04.02.2013, 04:20
Цитата Сообщение от QWERY_2012 Посмотреть сообщение
The sequence's constructor sets used to zero
не вижу конструктора конструктор по умолчанию не будет инициализировать used нулем.
За все отвечает программист! (это не ответ)
1
5 / 5 / 1
Регистрация: 09.09.2012
Сообщений: 227
04.02.2013, 04:21  [ТС]
ОК,

Для класса
C++
1
2
3
4
5
6
7
8
9
10
11
class sequence
{
public:
typedef double value_type;
typedef std::size_t size_type;
static const size_type CAPACITY = 30;
...
private:
value_type data[CAPACITY];
size_type used;
};
Конструктор sequence (sets used to zero) назначен использовать 0б но не помещает какого либо значения в массив. Почему?

A) Массив целых автоматически инициализируется в 0,
В) Первая активация функций insert или attach инициализируется в entire массив,
С) Инициализация массива была частью проекта, оставленная для реализации студентов,
D) Программер, кто использует класс sequence отвественный за инициализацию массива,
Е) Когда класс sequence впервые создан, ни один из массивов не используется.
0
 Аватар для abit
868 / 527 / 148
Регистрация: 03.02.2013
Сообщений: 1,845
04.02.2013, 04:34
точно B отпадает
в части C... какие в ж... студенты???
D - тоже отпадает, т.к. компилятор сам может неплохо синтезировать, здесь нет конструкторов копирования и десткруторов, так что сможет...

остались только A, C(??? что за студенты?), Е



всё же я проверил на более простом классе - конструктор обнулил int a[] , так что я настаиваю на варианте А )
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
04.02.2013, 04:36
Цитата Сообщение от QWERY_2012 Посмотреть сообщение
Почему?
в принципе, если у нас класс последовательность, то при used равным нулю, не имеет смысла инициализировать данный массив. счет будет идти от 0 до used, поэтому инициализировать следующий элемент массива имеет смысл при вставке нового элемента, т.е. метод insert, но тут как бы говорят про весь массив в ответе B, что так же не имеет смысла. Могу предположить, что ответ E - не используемый массив нет смысла инициализировать.
1
 Аватар для abit
868 / 527 / 148
Регистрация: 03.02.2013
Сообщений: 1,845
04.02.2013, 04:40
Цитата Сообщение от Croessmah Посмотреть сообщение
B
в принципе, если у нас класс последовательность, то при used равным нулю, не имеет смысла инициализировать данный массив. счет будет идти от 0 до used, поэтому инициализировать следующий элемент массива имеет смысл при вставке нового элемента, т.е. метод insert


на сколько я вижу, у него массив полностью описан в value_type data[CAPACITY];
CAPACITY - заявлена как static, значит она не входит в этот класс, а лишь в его видимости, кроме того const, значит она неизменна и массив data инициализируется конструктором (который синтезиуруется) при первом обращении к классу, а не к его методам
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
04.02.2013, 04:45
Цитата Сообщение от abit Посмотреть сообщение
значит она неизменна и массив data идеализируется конструктором
Это приведет к потере производительности приложения =)
Конструктор по умолчанию является примитивным.
Цитата Сообщение от abit Посмотреть сообщение
на сколько я вижу, у него массив полностью описан в value_type data[CAPACITY];
И что? Массив объявлен, количество используемых элементов=used=0. Смысл массив обнулять?

Цитата Сообщение от abit Посмотреть сообщение
так что я настаиваю на варианте А )
Настаиваете? Только вот как минимум не состыкуется:

Цитата Сообщение от QWERY_2012 Посмотреть сообщение
Массив целых автоматически инициализируется в 0(хоть это и не так)
Цитата Сообщение от QWERY_2012 Посмотреть сообщение
C++
1
2
typedef double value_type;
value_type data[CAPACITY];//Массив то double )))
1
 Аватар для Venzo
127 / 125 / 16
Регистрация: 03.07.2011
Сообщений: 354
04.02.2013, 04:46
Цитата Сообщение от abit Посмотреть сообщение
всё же я проверил на более простом классе - конструктор обнулил int a[] , так что я настаиваю на варианте А )
при создании переменной в стеке, она не инициализируется 0. Конструктор по умолчанию не проинициализирует массив.
http://liveworkspace.org/code/2lMcyi$0
0
 Аватар для abit
868 / 527 / 148
Регистрация: 03.02.2013
Сообщений: 1,845
04.02.2013, 04:49
Цитата Сообщение от ZoRT Посмотреть сообщение
при создании переменной в стеке, она не инициализируется 0. Конструктор по умолчанию не проинициализирует массив.
http://liveworkspace.org/code/2lMcyi$0
да, я ошибся, извиняюсь, я дейсвтительно, свой конструктор указал, просто по привычке... если вернуться к исходному коду - да, согласен инициализации data[] не произодойдет синтезированным конструктором, так что мой вариант А тоже отпал, я не о том размышлял... на массивы это не работает
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
04.02.2013, 04:50
Цитата Сообщение от abit Посмотреть сообщение
всё же я проверил на более простом классе - конструктор обнулил int a[]
Да ладно? Эт на каком языке то писали?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
class sequence
{
public:
static const size_t CAPACITY = 10;
double data[CAPACITY];
};
 
int main(){
    sequence a;
    for(size_t i=0;i<sequence::CAPACITY;++i){
    std::cout<<a.data[i]<<std::endl;
    }
}
Название: Безымянный.png
Просмотров: 21

Размер: 4.4 Кб
1
 Аватар для abit
868 / 527 / 148
Регистрация: 03.02.2013
Сообщений: 1,845
04.02.2013, 04:52
Цитата Сообщение от Croessmah Посмотреть сообщение
Да ладно? Эт на каком языке то писали?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
class sequence
{
public:
static const size_t CAPACITY = 10;
double data[CAPACITY];
};
 
int main(){
    sequence a;
    for(size_t i=0;i<sequence::CAPACITY;++i){
    std::cout<<a.data[i]<<std::endl;
    }
}
Вложение 231670
я ещё раз приношу извинения (
я указал свой конструктор sequence() еще в самом начале эксперемента и забыл об этом...
простите, А - отпал

p.s. писал я на g++ и виндовой консоли лет 5 не видел )))
0
 Аватар для Venzo
127 / 125 / 16
Регистрация: 03.07.2011
Сообщений: 354
04.02.2013, 04:53
A - нет
B - нет, инициализация происходит при создании объекта, а тут про вставку, да и при вставке устанавливается значение только одного(нескольких) элементов, а не всего массива сразу
C - ? возможный вариант, вам виднее
D - нет, класс должен минимизировать ошибки, а тут если программист забудет проинициализировать... глупый вариант в общем.
E - возможно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.02.2013, 04:53
Помогаю со студенческими работами здесь

Вызвать конструктор производного класса без конструктора базового класса
Здравствуйте! У меня есть базовый класс треугольник и производный класс равносторонний треугольник.В конструкторе треугольника вводятся...

Пример класса с конструктором и деструктором, создание экземпляра класса через конструктор с параметрами
Привести пример класса с конструктором и деструктором, созданием экземпляра класса с помощью конструктора с параметрами.

Создать конструктор копий и оператор присваивания для класса компьютер и члена класса марка
Создать конструктор копий и оператор присваивания для класса компьютер и члена класса марка. Всем огромное спасибо за помощь! |

Конструктор класса не дает инициализировать переменную класса
Привет. Вот такой вот класс. Когда пытаюсь в конструкторе присвоить name и hobby что либо, пишет ошибку: выражение должно быть допустимым...

В конструктор класса передать объект этого класса
Вопрос на засыпку :) Как в конструктор класса передать объект этого класса? Т.е. class A { public: A(const char* s){} ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru