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

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

07.12.2012, 08:48. Показов 859. Ответов 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
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 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
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
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/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru