Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
saturn77
0 / 0 / 0
Регистрация: 07.12.2012
Сообщений: 8
#1

класс с конструктором как он тут работает? - C++

07.12.2012, 08:48. Просмотров 371. Ответов 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. Могу только предполагать, что конструктор наследует самого себя.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2012, 08:48     класс с конструктором как он тут работает?
Посмотрите здесь:

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

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

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

Объясните пожалуйста как тут работает сортировка и что такое ostream_iterator<string> - C++
вот код. Объясните пожалуйста как тут работает сортировка, сам не могу разобраться. Оссобенно это ostream_iterator&lt;string&gt; не понимаю...

Создайте производный класс с дополнительными полями, конструктором по умолчанию и методами чтения/изменения значений этих полей - C++
Помогите! Завтра экзамен,времени нет! Заранее спасибо. 11. На базе заданного класса создайте производный класс с дополнительными полями,...

Выдает ошибку,тут что не так? Простейший класс - C++
#include&lt;conio.h&gt; #include&lt;io.h&gt; #include&lt;string.h&gt; #include&lt;iostream.h&gt; #include&lt;math.h&gt; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
07.12.2012, 08:54     класс с конструктором как он тут работает? #2
так работает?
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;
};
saturn77
0 / 0 / 0
Регистрация: 07.12.2012
Сообщений: 8
07.12.2012, 10:14  [ТС]     класс с конструктором как он тут работает? #3
теперь поля 15 и 20,что изменилось?)) так это наследование идет?
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
07.12.2012, 10:21     класс с конструктором как он тут работает? #4
Цитата Сообщение от saturn77 Посмотреть сообщение
так это наследование идет?
Всегда говорю, что не надо так инициализировать переменные в конструкторе.
C++
1
теперь поля 15 и 20,что изменилось?))
поменял
C++
1
2
int extra;
int size;
на:
C++
1
2
int size;
int extra;
saturn77
0 / 0 / 0
Регистрация: 07.12.2012
Сообщений: 8
07.12.2012, 10:29  [ТС]     класс с конструктором как он тут работает? #5
большое спасибо! подобной инициализации нигде не мог найти, у Страуструпа в книге даже не нашел(
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
12.12.2012, 06:20     класс с конструктором как он тут работает? #6
Цитата Сообщение от saturn77 Посмотреть сообщение
подобной инициализации нигде не мог найти, у Страуструпа в книге даже не нашел(
Не верю. А если всё ещё интересно - гуглим про списки инициализации конструктора.

Добавлено через 1 минуту
Цитата Сообщение от Croessmah Посмотреть сообщение
Всегда говорю, что не надо так инициализировать переменные в конструкторе.
"Так" - это списком инициализации? Или когда значение одной основывается на значении другой? Если первое - прокомментируй. Если второе, то действительно не надо, однако знать, что порядок инициализации через список зависит от порядка объявления полей в классе, всё же надо. А, зная это, таких ошибок можно избежать.
MrGluck
Модератор
Эксперт CЭксперт С++
6991 / 4162 / 594
Регистрация: 29.11.2010
Сообщений: 11,040
12.12.2012, 06:24     класс с конструктором как он тут работает? #7
Не, без списков инициализации конструктора никак - иначе как я буду конструкторы базовых классов вызывать и константы то инициализировать?)
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
12.12.2012, 08:13     класс с конструктором как он тут работает? #8
Цитата Сообщение от MrGluck Посмотреть сообщение
Не, без списков инициализации конструктора никак
Ну хотя бы не делать так, как у автора. На момент инициализации extra в size лежит мусор.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2012, 11:45     класс с конструктором как он тут работает?
Еще ссылки по теме:

Программа не работает.Какая тут ошибка? - C++
#include &lt;fstream&gt; #include &lt;iostream&gt; using namespace std; int main(void){ ifstream in(&quot;input.txt&quot;); if(!in.is_open()) ...

Программа не работает. Какая тут ошибка? - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;math.h&gt; using namespace std; int fact(int n); { ...

Код по алгоритму, приведенному тут:) Работает неверно - C++
Здравствуйте! Вот, собственно алгоритм, вот код, вроде должно работать:( Обрабатывается массив p_Q int * c = new int ; int...

Не пойму как работает класс - C++
Hi all Не пойму как работает пример #include &lt;stdafx.h&gt; #include &lt;conio.h&gt; using namespace std; class String { public: char*...


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

Или воспользуйтесь поиском по форуму:
saturn77
0 / 0 / 0
Регистрация: 07.12.2012
Сообщений: 8
12.12.2012, 11:45  [ТС]     класс с конструктором как он тут работает? #9
Цитата Сообщение от silent_1991 Посмотреть сообщение
Цитата Сообщение от saturn77 Посмотреть сообщение
подобной инициализации нигде не мог найти, у Страуструпа в книге даже не нашел(
Не верю. А если всё ещё интересно - гуглим про списки инициализации конструктора.
спасибо, нашел у Страуструпа, я ведь не в курсе был, что это называется - список инициализации)
Yandex
Объявления
12.12.2012, 11:45     класс с конструктором как он тут работает?
Ответ Создать тему
Опции темы

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