Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 07.12.2012
Сообщений: 8

Класс с конструктором, как он тут работает?

07.12.2012, 08:48. Показов 871. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Не могу понять как работает программа, помогите разобраться, пожалуйста.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# include<iostream>
using namespace std;
 
class MyClass
{
public:
MyClass( int capacity ): size( capacity + 5 ), extra( size + 5 )
{
std::cout << "size = " << size << '\n';
std::cout << "extra = " << extra << '\n';
}
 
int extra;
int size;
};
 
 
int main() {
MyClass m(10);
 
system("pause");
return 0;
}
Результат у меня такой: size=15 , extra= -858993455. Могу только предполагать, что конструктор наследует самого себя.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.12.2012, 08:48
Ответы с готовыми решениями:

как написать программу, к примеру, класс шаблон выводящая дин. массив любого типа, с конструктором и деструктором...
Доброго всем времени суток! Очень заинтересовался этим языком, но не все получается. Вот как написать программу, к примеру, класс шаблон...

Класс с конструктором
Доброго времени суток,помогите,пожалуйста с кодом для ВУЗа. Задание:предметная область: больница. каждый пациент описывается следующими...

Когда лучше создать обычный класс с закрытым конструктором по умолчанию, а когда статический класс?
Гайс, ай нид хелп. На собеседовании задали вопрос - когда лучше создать обычный класс с закрытым конструктором по умолчанию, а когда...

8
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
07.12.2012, 08:54
так работает?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
 
class MyClass
{
public:
MyClass( int capacity ): size(capacity+5),extra(size+5)
{
std::cout << "size = " << size << '\n';
std::cout << "extra = " << extra << '\n';
}
int size;
int extra;
};
0
0 / 0 / 0
Регистрация: 07.12.2012
Сообщений: 8
07.12.2012, 10:14  [ТС]
теперь поля 15 и 20,что изменилось?)) так это наследование идет?
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
07.12.2012, 10:21
Цитата Сообщение от saturn77 Посмотреть сообщение
так это наследование идет?
Всегда говорю, что не надо так инициализировать переменные в конструкторе.
C++
1
теперь поля 15 и 20,что изменилось?))
поменял
C++
1
2
int extra;
int size;
на:
C++
1
2
int size;
int extra;
0
0 / 0 / 0
Регистрация: 07.12.2012
Сообщений: 8
07.12.2012, 10:29  [ТС]
большое спасибо! подобной инициализации нигде не мог найти, у Страуструпа в книге даже не нашел(
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
12.12.2012, 06:20
Цитата Сообщение от saturn77 Посмотреть сообщение
подобной инициализации нигде не мог найти, у Страуструпа в книге даже не нашел(
Не верю. А если всё ещё интересно - гуглим про списки инициализации конструктора.

Добавлено через 1 минуту
Цитата Сообщение от Croessmah Посмотреть сообщение
Всегда говорю, что не надо так инициализировать переменные в конструкторе.
"Так" - это списком инициализации? Или когда значение одной основывается на значении другой? Если первое - прокомментируй. Если второе, то действительно не надо, однако знать, что порядок инициализации через список зависит от порядка объявления полей в классе, всё же надо. А, зная это, таких ошибок можно избежать.
1
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
12.12.2012, 06:24
Не, без списков инициализации конструктора никак - иначе как я буду конструкторы базовых классов вызывать и константы то инициализировать?)
0
 Аватар для Schizorb
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
12.12.2012, 08:13
Цитата Сообщение от MrGluck Посмотреть сообщение
Не, без списков инициализации конструктора никак
Ну хотя бы не делать так, как у автора. На момент инициализации extra в size лежит мусор.
0
0 / 0 / 0
Регистрация: 07.12.2012
Сообщений: 8
12.12.2012, 11:45  [ТС]
Цитата Сообщение от silent_1991 Посмотреть сообщение
Цитата Сообщение от saturn77 Посмотреть сообщение
подобной инициализации нигде не мог найти, у Страуструпа в книге даже не нашел(
Не верю. А если всё ещё интересно - гуглим про списки инициализации конструктора.
спасибо, нашел у Страуструпа, я ведь не в курсе был, что это называется - список инициализации)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.12.2012, 11:45
Помогаю со студенческими работами здесь

Реализовать класс с конструктором
Здравствуйте! Помогите, пожалуйста, с программой: Реализуйте класс «Person» с конструктором, имеющим два параметра: stringFIO,...

Класс с Конструктором и Деструктором
напишите класс, содержащий закрытые целочисленные переменные , характеризующие координаты точки в пространстве и ее температуру(с плавающей...

Класс Parent сделать абстрактным, но с конструктором
Здравствуйте! С C++/CLI никогда не работал раньше. Как реализовать что-то подобное в ref классах? class Parent { public: ...

Создать класс с двумя полями и конструктором
Напишите пожалуйста класс содержащий два поля: фирма машины(строка), цена(число); конструктор и методы ввода/вывода. Мой зачет в...

надо объяснить как работает рекурсия тут
int func(int n) { if (!(n % 2)) { return func(n / 2); } else {


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru