Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
#1

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

22.10.2013, 15:32. Просмотров 247. Ответов 6
Метки нет (Все метки)

Вместо того что в конструктооре инициализировать переменные в скобках- одной переменной присваиваем значение другой, приминяя присвоитель = , тут я вижу невесть что и пустые скобки...

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

Пример
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: }
Пожалуста посмотрите, прокоментируйте
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2013, 15:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Применение конструктора- пример из книги.Что за чудиса? (C++):

Пример перегрузки конструктора - C++
Приведите простой пример пожалуйста.

Пример конструктора копирования не понятен - C++
Задание: есть класс, одним из пунктом является написание класса копирования. Есть такой код Phone::Phone(Phone *a){ ...

пример из книги - C++
#include &lt;iostream.h&gt; long summa (int k,...){ int *pik=&amp;k; char *pc=(char *)pik; cout &lt;&lt;&quot; *pc=&quot;&lt;&lt;*pc&lt;&lt;&quot;...

Пример с книги не компилируется! - C++
Павловская Т.С. Пример (программа печатает таблицу значений функции г/=х2+1 во введенном диапазоне): ...

Пример из книги. Шилдт - C++
Всем привет. Вот пример из книги Шилдта. У меня не работает деструктор (не выводится сообщение) #include &lt;iostream&gt; using namespace...

Не работает пример из книги - C++
Я писал код из книжки и ничего не работает. #include &lt;iostream&gt; using namespace std; #include &lt;conio.h&gt; int main(){ ...

6
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
22.10.2013, 15:34 #2
Dimka-novitsek, google список инициализации
1
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
22.10.2013, 17:52  [ТС] #3
Нет, уж минут 20 гуглю, яндексю.. Заумно там очень, часто на примерах структур, и еще применяя десяток терминоа непонятных.. или тема около того, наподобие [c++] Инициализация в теле конструктора или в списке инициализации - большая ли разница в сгенерированном коде?
Мог ли бы кто в трех- пяти- или чуть больше строках разьяснить попростому, лучше с небольшим примером или дать толковую ссылку?
Хотя я впрчем и так приблизительно понял как, но более толковое обьяснение бы нипомишало.
0
Raali
623 / 327 / 34
Регистрация: 06.07.2013
Сообщений: 1,070
Завершенные тесты: 1
22.10.2013, 17:54 #4
в список инициализации пишут все конструкторы, которые только могут туда попасть , чтобы не использовать операторы присваивания зря
1
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 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 конструктора и один оператор присваивания, а можно обойтись всего лишь двумя вызовами конструкторов
1
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
22.10.2013, 18:31  [ТС] #6
Спасибо!!!
0
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
22.10.2013, 18:42 #7
попробуйте присвоить значение ссылке ну или константе в теле конструктора
1
22.10.2013, 18:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2013, 18:42
Привет! Вот еще темы с ответами:

Простой пример из книги - C++
Решил сделать все задания Павловской Т.А. С/С++ и вот с самого первого примера не понял кое-что. Сама программа вылетает и не показывает...

Непонятный пример из книги - C++
Не могу никак разобраться в одном маленьком примере из книги, речь идёт про условную операцию. Распишите плз, как действует при i=0 i=1 i= 2

Пример из книги не работает. - C++
Пример из книги, тема Классы но смотрю что нет обращения к Task::swap(int i,int j) Думаю ошибка именно в Task::sort(int size). ...

Пример из книги Лафоре - C++
В третьей главе книги Лафоре по с++ есть пример использующий функцию getche(): #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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