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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2011, 01:55   #1
pufystyj
Форумчанин
 
Аватар для pufystyj
 
Регистрация: 10.11.2010
Сообщений: 569
Вопрос как это работает?

Код:
class soldier
{
private:
  int x, y;
  int ammo;

public:
  soldier() : x(0), y(0), ammo(0) {}
  soldier(int x_init, int y_init, int ammo_init) : x(x_init),
              y(y_init), ammo(ammo_init)
  {}

  void move(int, int);
};

void soldier::move(int dx, int dy)
{
  x = dx;
  y = dy;
}
вся проблема в коде
Код:
  soldier() : x(0), y(0), ammo(0) {}
  soldier(int x_init, int y_init, int ammo_init) : x(x_init),
              y(y_init), ammo(ammo_init)
  {}
как это работает, зачем :, и как это можна записать в норм коде?
ну типа:
Цитата:
soldier ()
{
x = 0;
y = 0;
}
Это ещё не конец и даже не начало конца, это возможно только конец начала.
pufystyj вне форума Ответить с цитированием
Старый 24.04.2011, 02:02   #2
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

Не понятна суть пролемы. Код ведь абсолютно рабочий. Можете писать и так, как вы указали. Делаться будет то же.
mMAg вне форума Ответить с цитированием
Старый 24.04.2011, 02:04   #3
pufystyj
Форумчанин
 
Аватар для pufystyj
 
Регистрация: 10.11.2010
Сообщений: 569
По умолчанию

гг прикинь это я так наугад код написал...
лан с первой функцией розобрался,
а что здесь
Код:
  soldier(int x_init, int y_init, int ammo_init) : x(x_init),
              y(y_init), ammo(ammo_init)
  {}
Это ещё не конец и даже не начало конца, это возможно только конец начала.
pufystyj вне форума Ответить с цитированием
Старый 24.04.2011, 02:58   #4
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

Абсолютно то же самое
mMAg вне форума Ответить с цитированием
Старый 24.04.2011, 03:59   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Про ammo в первом пересывании забыли... Только нафик это делать?..
p51x вне форума Ответить с цитированием
Старый 24.04.2011, 12:15   #6
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

1 -список инициализации
2 -присваивание
1-ое чуть чуть быстрее
onewho вне форума Ответить с цитированием
Старый 24.04.2011, 16:50   #7
blacktener
Пользователь
 
Регистрация: 15.12.2010
Сообщений: 78
По умолчанию все просто

Soldier() : x(0) , y(0)
{}

это конструктор со списком инициализации. Этот список придумали для удобства. Вообщем-то если ты попрограммируешь какое-то время то поймешь что так действительно удобнее.
Список начинается с двоеточия ( отделенного пробелами и содержит в себе переменные класса записанные через кому с начальными значениеями в скобочках. Ну то есть типа такого
Constructor(int some) : x(some)
{}

тут переменная икс принимает значение some. Потом в программе ты пишешь
Soldier vasya(10);
и солдат вася сразу имеет в себе икс=10;
надеюсь понятно обьяснил
blacktener вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как это работает? Ислам Помощь студентам 0 15.03.2011 20:11
Что это такое и как оно работает genya-yatsun Общие вопросы C/C++ 4 16.01.2011 17:46
Как это работает? m0nax Свободное общение 3 28.12.2010 15:41
Как это работает: Стекло-зеркало Levsha100 Свободное общение 8 20.01.2010 23:24
Си++. Как это работает? paladinn Помощь студентам 3 18.07.2009 01:48