15 / 15 / 2
Регистрация: 26.04.2012
Сообщений: 1,091
|
||||||
1 | ||||||
Что делает конструктор?27.08.2013, 23:23. Показов 8092. Ответов 77
Метки нет (Все метки)
Я очень плохо понял вобще. Он вроде помогает создать в памяти место для переменных обьявленых в классе??
В каких слуаях его лучше создавать и использовать?Его лучше иметь для каждого класса? Где его при этом лучше писать- перед классом, позже или внутри? Почему его-конструктор- можно писать с параметрами и без параметров? Какие имено такие параметры и зачем конструктор в себя принимает? Был ли автоматически создан стандартный конструктор при создани класса или обьекта? Почему компилятор ругается на создание какого-то деструктора?
0
|
27.08.2013, 23:23 | |
Ответы с готовыми решениями:
77
Не могу понять на что способен sort, и что делает его компаратор Что в программе делает так, что процессор грузится на 100%? Я не могу понять что делает данная программа. Точнее что делают функции используемые в это коде Что это за знак >> прочитал что это сдвиг вправо? что он делает |
15 / 15 / 2
Регистрация: 26.04.2012
Сообщений: 1,091
|
||||||
01.09.2013, 13:55 [ТС] | 61 | |||||
Вот эту самую строку надо располагать выше обьявления функции! А там посмотрим. //employee(char *, long, float);
Добавлено через 54 секунды надо смотреть как минимум и предыдущую строку. Спасибо!! Понял. Добавлено через 9 минут Прикиньте!! А теперь стало вдруг ругаться на строку в майне. Фокус в том, что работало, пока я ни добавил конструктор!!
1>d:\проги\reshenie\employee\employee.cpp(37): error C2512: employee: нет подходящего конструктора по умолчанию Добавлено через 1 минуту Правда, обьясните, я напрочь туплю!
0
|
163 / 104 / 14
Регистрация: 17.10.2012
Сообщений: 488
|
|
01.09.2013, 14:07 | 62 |
Написано же - создайте конструктор по умолчанию
1
|
15 / 15 / 2
Регистрация: 26.04.2012
Сообщений: 1,091
|
|
01.09.2013, 14:09 [ТС] | 63 |
Так. Это раньше я объявляел два объекта типа employee — worker и boss и использовал для обращения к ним точку. Видо теперь, поле создания конструктора так нельзя, и уже нужно использовать другие методы.
0
|
163 / 104 / 14
Регистрация: 17.10.2012
Сообщений: 488
|
|
01.09.2013, 14:17 | 64 |
Dimka-novitsek, почитайте нормальную литературу (справочник Шилдта как раз). Вы не до конца изучили. Конструктор по умолчанию это конструктор, который вызывается, если явно его не указать (как в строке 37). Опишите конструктор employee::employee();
1
|
15 / 15 / 2
Регистрация: 26.04.2012
Сообщений: 1,091
|
|
01.09.2013, 14:44 [ТС] | 65 |
Спасибо!! Вы не до конца изучили.Конечно!!
0
|
15 / 15 / 2
Регистрация: 26.04.2012
Сообщений: 1,091
|
|
01.09.2013, 14:58 [ТС] | 66 |
Компилировалось!!!!!
0
|
Модератор
8909 / 6678 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
|
|
01.09.2013, 15:13 | 67 |
пока ты не добавил конструктор, компилятор сам создавал конструктор по умолчанию
как только ты добавил любой конструктор, по умолчанию пропал, и нужно уже описывать конструктор без параметров
1
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
01.09.2013, 16:14 | 68 |
А так же деструктор и конструктор копирования, ну в смысле если ты их не создал, то компилятор их создает автоматически, а если создаешь, то компилятор уже ни чего не создает.
1
|
15 / 15 / 2
Регистрация: 26.04.2012
Сообщений: 1,091
|
|
01.09.2013, 16:48 [ТС] | 69 |
Спасибо!!ValeryS и VLK!
Конструктор работает именно с переменными, обьявлеными в классе, верно? А функция-нет?
0
|
163 / 104 / 14
Регистрация: 17.10.2012
Сообщений: 488
|
|
01.09.2013, 16:51 | 70 |
Лолшто? Конструктор это та же функция (я говорю о функциях-членах класса), и работает так же, как и остальные функции-члены. Только вызывается автоматически. О чем вы вообще?
1
|
15 / 15 / 2
Регистрация: 26.04.2012
Сообщений: 1,091
|
||||||
01.09.2013, 17:00 [ТС] | 71 | |||||
Щас.
Добавлено через 3 минуты Вот в этой конструкции
Добавлено через 1 минуту Короче, они сущиствуют только внутри конструктора, я понял. Добавлено через 35 секунд Да нет.. В общем, я не понял.
0
|
163 / 104 / 14
Регистрация: 17.10.2012
Сообщений: 488
|
|
01.09.2013, 17:02 | 72 |
Еще раз - конструктор - функция, следовательно все локальные переменные расположены в области видимости этой функции. У вас в классе есть переменные с таким же именем, по-этому, во избежание конфликта имён, используется запись employee::employee_id, т.е. явно указывается, что переменная является членом класса.
1
|
15 / 15 / 2
Регистрация: 26.04.2012
Сообщений: 1,091
|
||||||
01.09.2013, 23:27 [ТС] | 73 | |||||
Нет, подождите..
Добавлено через 20 секунд Да, спасибо!! Добавлено через 6 часов 23 минуты А что тут делает деструктор, да еще и сразу же после конструктора?? Ведб он его должен сразу убрать??
Ведь это деструктор??
0
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|||||||||||||||||||||||||||||||
02.09.2013, 13:24 | 74 | ||||||||||||||||||||||||||||||
Dimka-novitsek, вот смотри, делаем класс хуман, человек по нашему:
Кликните здесь для просмотра всего текста
строчка 20 мы создаем объект класса (объект first, класс chelovek), потом в строчка 22, 23, 24, 25, 26, мы задаем ему параметры. 6 строчек, а представь что у тебя 1000 человек (объектов). Было бы не плохо, если бы все это можно было объединить всего в одну строчку, в более простой форме, для этого существует конструктор (в том числе для этого), теперь смотри: Кликните здесь для просмотра всего текста
лучше стало? проще? Сам конструктор по мимо работы с переменными класса может работать и с другими вещами, например вызывать посторонние функции: Кликните здесь для просмотра всего текста
Моя тебе рекомендация, всегда в классе создавай конструктор по умолчанию (т.е. без параметров) и конструктор с параметрами, я не буду расписывать почему, это на полстраницы текста, когда дойдешь до наследования, STL тогда поймешь. Добавлено через 14 минут Деструктор используется для удаления (разрушения объекта), после того как он стал не нужен, если у тебя в классе простые (статичные) переменные:
если ты не сталкивался с динамическими переменными, т.е. не встречал такие слова как new, delete, тогда можешь пока что не напрягаться. Если хочешь проверить как происходит утечка памяти, воспользуйся этой программой: Кликните здесь для просмотра всего текста
скомпилируй, запусти диспетчер задач и запусти программу, посмотри как будет улетать твоя оперативная память. а потом добавь всего одну строчку в эту программу, в функцию fun() и посмотри как уже улетать ни чего не будет: Кликните здесь для просмотра всего текста
1
|
15 / 15 / 2
Регистрация: 26.04.2012
Сообщений: 1,091
|
||||||
02.09.2013, 17:09 [ТС] | 75 | |||||
Спасибо, VLK!!! Я минут назад увидел сообщение, ,,пробежал,, его, щас почитаю подробнее!
А вот, если можно, подскажите кто-н, что хочет тут компилятор.
1>d:\проги\resheniefrisky\frisky\frisky.cpp(59): error C2679: бинарный "<<": не найден оператор, принимающий правый операнд типа "void" (или приемлемое преобразование отсутствует) 1> d:\documents\читать\с++\vc\include\ostream(679): может быть "std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const char *)" 1> with( и дальше еще примерно 140 строк нивразумитильной писанины..... ) Добавлено через 1 минуту Ведь ошибка означает, что я что-л нипанимаю!
0
|
15 / 15 / 2
Регистрация: 26.04.2012
Сообщений: 1,091
|
|
02.09.2013, 17:16 [ТС] | 77 |
Спасибо!!
0
|
Модератор
8909 / 6678 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
|
|
02.09.2013, 19:19 | 78 |
ты пытаешься вывести на экран(точнее в поток) значение которое вернет функция член(она же метод)QetAge()
но она ничего не возвращает о чем тебе и сообщают
1
|
02.09.2013, 19:19 | |
02.09.2013, 19:19 | |
Помогаю со студенческими работами здесь
78
что такое super.onCreate(savedInstanceState);? что оно делает? Дать понять пользователю, что программа что-то делает, а не зависла Какова вероятность того, что родители увидят, что сын делает уроки Добрый вечер. move_uploaded_file делает не совсем то, что мне нужно, что я сделал не так? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |