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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 74, средняя оценка - 4.85
sanik
1 / 1 / 0
Регистрация: 17.10.2009
Сообщений: 12
#1

Зачем нужен конструктор? - C++

09.11.2009, 13:29. Просмотров 9511. Ответов 8
Метки нет (Все метки)

Всем доброго дня.
Ребят такая проблема объясните мне на пальцах для чего нужен конструктор в классах. Я уже столько толмудов перерыл но однозначного ответа так и не нашел везде по разному пишут и через сопли.
Зарнание спасибо.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HIMen
 Аватар для HIMen
4114 / 1363 / 39
Регистрация: 12.04.2009
Сообщений: 2,346
09.11.2009, 13:46     Зачем нужен конструктор? #2
чтобы инициализировать поля класса
RazorQ
 Аватар для RazorQ
576 / 343 / 9
Регистрация: 06.02.2009
Сообщений: 1,386
09.11.2009, 14:11     Зачем нужен конструктор? #3
Конструктор - назвнание говорит само за себя. Вызывается при создании нового объекта. Т.к. поля (переменные, кому как нравиться) нельзя инициализировать непосредственно в объявлении класса, то конструктором часто пользуются для этих целей. Более того, в этом случае мы получаем более гипкий способ инициализации переменных.
sanik
1 / 1 / 0
Регистрация: 17.10.2009
Сообщений: 12
09.11.2009, 14:15  [ТС]     Зачем нужен конструктор? #4
Так он нужен только для инициализации того что находится в классе и все на этом его фунции заканчиваются?
RazorQ
 Аватар для RazorQ
576 / 343 / 9
Регистрация: 06.02.2009
Сообщений: 1,386
09.11.2009, 14:16     Зачем нужен конструктор? #5
Он подготавливает объект для нормальной работы. А что ты от него ещё хочешь?
patriot2008
 Аватар для patriot2008
70 / 70 / 4
Регистрация: 04.12.2008
Сообщений: 463
09.11.2009, 14:45     Зачем нужен конструктор? #6
Цитата Сообщение от sanik Посмотреть сообщение
Так он нужен только для инициализации того что находится в классе и все на этом его фунции заканчиваются?
Инициализация и выделение памяти полям класса - это основные функции конструктора.
sanik
1 / 1 / 0
Регистрация: 17.10.2009
Сообщений: 12
09.11.2009, 15:02  [ТС]     Зачем нужен конструктор? #7
Спрошу немного по другому. Когда конструктор в классе не указан явно то он создается по умолчанию. А в каком случае надо создавать его явно? Какие у него параметры есть которых нету в конструкторе созданом по умолчанию?
M128K145
Эксперт C++
 Аватар для M128K145
8277 / 3496 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
09.11.2009, 15:26     Зачем нужен конструктор? #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
sanik, если ты в классе не опишешь хотя бы один конструктор, то он при такой записи
C++
1
A *a = new A();
вызовется автоматически и установит значения всех полей значениями по умолчанию для их типов и тогда его описывать явно не надо. Если же тебе надо чтобы при таком создании объекта полям присваивались нужные тебе значения, то ты описываешь свой конструктор. Они бывают нескольких видов(например для класса A):
C++
1
2
3
4
5
class A
{
public:
    int a;
}
1) без параметров
C++
1
A(){ a = 5; }
2) с параметрами
C++
1
A(int b){ a = b; }
3) копирования
C++
1
A(A *b){ a = b->a; }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2009, 15:34     Зачем нужен конструктор?
Еще ссылки по теме:

C++ Зачем нужен конструктор объекта ostringstream (строковый поток который) с двумя аргументами?
C++ Зачем в программе 2 раза вызывать конструктор для одного объекта
C++ Зачем нужен полиморфизм
C++ Объясните, зачем в коде нужен явный конструктор копирования
Зачем нужен конструктор переноса? C++

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

Или воспользуйтесь поиском по форуму:
sanik
1 / 1 / 0
Регистрация: 17.10.2009
Сообщений: 12
09.11.2009, 15:34  [ТС]     Зачем нужен конструктор? #9
M128K145, Вооо то что нужно, спасибо огромное терь все встало на свои места.
Yandex
Объявления
09.11.2009, 15:34     Зачем нужен конструктор?
Ответ Создать тему
Опции темы

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