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

Применение конструктора- пример из книги.Что за чудиса? - C++

Восстановить пароль Регистрация
 
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
22.10.2013, 15:32     Применение конструктора- пример из книги.Что за чудиса? #1
Вместо того что в конструктооре инициализировать переменные в скобках- одной переменной присваиваем значение другой, приминяя присвоитель = , тут я вижу невесть что и пустые скобки...

Что это? Это ошибка автора и ли как-то так тоже можно и верно?

Пример
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
Листинг 10.2. Использование значений, заданных по умолчанию
1: //Листинг 10.2. Использование значений, заданных по умолчанию
2: #include <iostream.h>
3:
4: int
5:
6: // Объявление класса Rectangle
7: class Rectangle
8: {
9:*** public:
10:***** // конструкторы
11:***** Rectangle(int width, int height);
12:***** ~Rectangle() { }
13:***** void DrawShape(int aWidth, int aHeight, bool UseCurrentVals = false) const;
14:
15:** private:
16:***** int itsWidth;
17:***** int itsHeight;
18: };
19:
20: //Применение конструктора
21: Rectangle::Rectangle(int width, int height):
22: itsWidth(width), // инициализация
23: itsHeight(height)
24: { }*// пустое тело
25:
26:
27: // для третьего параметра используются значения по умолчанию
28: void Rectangle::DrawShape(
29:*** int width,
30:*** int height,
31:*** bool UseCurrentValue
32:*** ) const
33: {
34:*** int printWidth;
35:*** int printHeight;
36:
37:*** if (UseCurrentValue == true)
38:*** {
39:****** printWidth = itsWidth;* // используется значение текущего класса
40:****** printHeight = itsHeight;
41:*** }
42:*** else
43:*** {
44:****** printWidth = width;** // используются значения параметра
45:****** printHeight = height;
46:*** }
47:
48:
49:*** for (int i = 0; i<printHeight; i++)
50:*** {
51:****** for (int j = 0; j< printWidth; j++)
52:****** {
53:********* cout << "*";
54:****** }
55:****** cout << "\n";
56:*** }
57: }
58:
59: // Выполняемая программа показывает использование перегруженных функций
60: int main()
61: {
62:*** // создание прямоугольника 30 на 5
63:*** Rectangle theRect(30,5);
64:*** cout << "DrawShape(0,0,true)...\n";
65:*** theRect.DrawShape(0,0,true);
66:*** cout << "DrawShape(40,2)...\n";
67:*** theRect.DrawShape(40,2);
68:*** return 0;
69: }
Пожалуста посмотрите, прокоментируйте
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2013, 15:32     Применение конструктора- пример из книги.Что за чудиса?
Посмотрите здесь:

Пример из книги не работает. C++
пример из книги страуструпа C++
Пример перегрузки конструктора C++
C++ Пример из книги. Шилдт
Простой пример из книги C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
22.10.2013, 15:34     Применение конструктора- пример из книги.Что за чудиса? #2
Dimka-novitsek, google список инициализации
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
22.10.2013, 17:52  [ТС]     Применение конструктора- пример из книги.Что за чудиса? #3
Нет, уж минут 20 гуглю, яндексю.. Заумно там очень, часто на примерах структур, и еще применяя десяток терминоа непонятных.. или тема около того, наподобие [c++] Инициализация в теле конструктора или в списке инициализации - большая ли разница в сгенерированном коде?
Мог ли бы кто в трех- пяти- или чуть больше строках разьяснить попростому, лучше с небольшим примером или дать толковую ссылку?
Хотя я впрчем и так приблизительно понял как, но более толковое обьяснение бы нипомишало.
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
22.10.2013, 17:54     Применение конструктора- пример из книги.Что за чудиса? #4
в список инициализации пишут все конструкторы, которые только могут туда попасть , чтобы не использовать операторы присваивания зря
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
22.10.2013, 18:06     Применение конструктора- пример из книги.Что за чудиса? #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
 
struct foo
{
    foo() { std::cout << "foo c-tor" << std::endl; }
    foo(int i) { std::cout << "foo c-tor with i = " << i << std::endl; }
};
 
struct bar
{
    bar() : f1(5) //инициализация
    {
        //f2 уже инициализирован вызовом конструктора без параметров
        f2 = foo(6); //в этой строке происходит присваивание
    }
 
    foo f1;
    foo f2;
};
 
int main()
{
    bar b;
}
итого вызвано 3 конструктора и один оператор присваивания, а можно обойтись всего лишь двумя вызовами конструкторов
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
22.10.2013, 18:31  [ТС]     Применение конструктора- пример из книги.Что за чудиса? #6
Спасибо!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2013, 18:42     Применение конструктора- пример из книги.Что за чудиса?
Еще ссылки по теме:

Пример с книги не компилируется! C++
C++ пример из книги
C++ Пример из книги- ну, напутан

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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,915
Записей в блоге: 2
Завершенные тесты: 1
22.10.2013, 18:42     Применение конструктора- пример из книги.Что за чудиса? #7
попробуйте присвоить значение ссылке ну или константе в теле конструктора
Yandex
Объявления
22.10.2013, 18:42     Применение конструктора- пример из книги.Что за чудиса?
Ответ Создать тему
Опции темы

Текущее время: 16:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru