Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2009, 16:59   #1
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
Вопрос Конструкторы С++ Билдер

Здравствуйте программисты! Скажите пожалуйста, это правда,что конструктор предназначен для того,чтоб инициализировать переменные сразу, в момент создания переменных,только для этого он предназначен. Ещё, в конструкторе можно описывать только переменные которые находятся в разделе private или protected,или нет? Просто,когда я объявляю конструктор, например вот так,ниже,тогда я описую переменные из привата, в конструкторе пишу такие же самые переменные как в привате, без описания не компилируется. И последнее, зачем в в конце строки, ниже counter():count(0),f(5){} , ставиться знак "{ }",просто без него не работает.Заранне благодраю за ответ.

Код:
class counter{
private:
unsigned int count;
int f;
public:
counter():count(0),f(5){}

Последний раз редактировалось prikolist; 02.05.2009 в 17:02.
prikolist вне форума Ответить с цитированием
Старый 02.05.2009, 17:16   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от prikolist
Просто,когда я объявляю конструктор, например вот так,ниже,тогда я описую переменные из привата, в конструкторе пишу такие же самые переменные как в привате, без описания не компилируется.
Смотрите пример. Все компилируется.

Код:
class counter{
private:
unsigned int count;
int f;
public:
counter():count(0),f(5){}
int showCount(void)
 {
  return count;
 }
};

void __fastcall TForm1::Button1Click(TObject *Sender)
{
counter A;
ShowMessage(IntToStr(A.showCount()));
}
Цитата:
И последнее, зачем в в конце строки, ниже counter():count(0),f(5){} , ставиться знак "{ }",просто без него не работает
Потому что это, как-никак, функция.

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

Цитата:
Ещё, в конструкторе можно описывать только переменные которые находятся в разделе private или protected,или нет?
И в public.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 02.05.2009, 17:21   #3
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
По умолчанию

Всё понятно, но не понял последний ваш ответ по поводу моего вот этого вопроса.
Код:
Ещё, в конструкторе можно описывать только переменные которые находятся в разделе private или protected,или нет?
Вы не сказали, да или нет. Смотрите вы же в конструкторе используете переменные из протектеда!!! Тоесть вы используете unsigned int count;
int f;
, а они описаны в протектеде.

Ещё,встретил вот такую строку. Если не сложно, дайте расшифровку пожалуйста.Вот строка.
Код:
Эта строка была описана в классе televizor.
televizor(double sqr, int count, int flr): square(sqr), count_room(count), floor(flr) {}

Последний раз редактировалось prikolist; 02.05.2009 в 17:24.
prikolist вне форума Ответить с цитированием
Старый 02.05.2009, 17:26   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Смотрите вы же в конструкторе используете переменные из протектеда!!
Поправка: из private.
В конструкторе можно инициализировать переменные из private, protected и public.

Код:
televizor(double sqr, int count, int flr): square(sqr), count_room(count), floor(flr) {}
Это значит, что переменные будут инициализированы значениями, переданными как аргументы в конструктор.
То есть как-то так:
Код:
televizor A(2,4,5);
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 02.05.2009, 17:38   #5
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
По умолчанию

Спасибо. Вопрос. Тоесть в скобочках из этой строки,ниже которая. Вначале описуется televizor(double sqr, int count, int flr):
Тоесть скобки предназначенны для описания переменных с типами, а дальше, после двуеточия,в скобочках, например :square(sqr), count_room(count), идёт присваивание этим переменным double sqr, int count, int flr значений.
Код:
televizor(double sqr, int count, int flr): square(sqr), count_room(count), floor(flr) {}
prikolist вне форума Ответить с цитированием
Старый 02.05.2009, 17:40   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Тоесть скобки предназначенны для описания переменных с типами
Поправка: для описания аргументов, которые передаются конструктору.
Цитата:
идёт присваивание этим переменным double sqr, int count, int flr значений.
Присваивание не этим переменным (аргументам), а тем, что объявлены в самом классе:
square, count_room и floor.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конструкторы и классы С++ Lioness Помощь студентам 12 06.11.2011 09:50
Конструкторы класса и двунаправленный список (*_*) Общие вопросы C/C++ 2 29.04.2009 18:17
Конструкторы и деконструкторы Элодар Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 11.02.2009 10:25
Конструкторы Лорд Общие вопросы C/C++ 1 21.12.2008 18:35