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

Разобрать блок приведенного кода - C++

Восстановить пароль Регистрация
 
Aspirin
29 / 6 / 0
Регистрация: 05.10.2012
Сообщений: 117
24.08.2014, 13:30     Разобрать блок приведенного кода #1
Есть код:
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
Game::Game()
: mWindow(sf::VideoMode(640, 480), "SFML Application", sf::Style::Close)
, mTexture()
, mPlayer()
, mFont()
, mStatisticsText()
, mStatisticsUpdateTime()
, mStatisticsNumFrames(0)
, mIsMovingUp(false)
, mIsMovingDown(false)
, mIsMovingRight(false)
, mIsMovingLeft(false)
{
    if (!mTexture.loadFromFile("Media/Textures/Eagle.png"))
    {
        // Handle loading error
    }
 
    mPlayer.setTexture(mTexture);
    mPlayer.setPosition(100.f, 100.f);
    
    mFont.loadFromFile("Media/Sansation.ttf");
    mStatisticsText.setFont(mFont);
    mStatisticsText.setPosition(5.f, 5.f);
    mStatisticsText.setCharacterSize(10);
}
Подскажите, что значит этот кусок:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
Game::Game()
: mWindow(sf::VideoMode(640, 480), "SFML Application", sf::Style::Close)
, mTexture()
, mPlayer()
, mFont()
, mStatisticsText()
, mStatisticsUpdateTime()
, mStatisticsNumFrames(0)
, mIsMovingUp(false)
, mIsMovingDown(false)
, mIsMovingRight(false)
, mIsMovingLeft(false)
{
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
24.08.2014, 13:32     Разобрать блок приведенного кода #2
Member initializer list
Lucky_boy
0 / 0 / 0
Регистрация: 24.08.2014
Сообщений: 14
24.08.2014, 13:40     Разобрать блок приведенного кода #3
обычная инициализация атрибутов класса до тела конструктора
например:
C++
1
2
3
4
5
6
7
8
9
10
 
class main{
int atr1;
int atr2;
public:
main(int input);
}
main::main(int input):atr1(input),atr2(0)
{
}
здесь в конструкторе atr1 принимает значение input, a atr2 - 0
Aspirin
29 / 6 / 0
Регистрация: 05.10.2012
Сообщений: 117
24.08.2014, 13:44  [ТС]     Разобрать блок приведенного кода #4
А какой в этом смысл? Почему бы не занести в тело конструктора?
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
24.08.2014, 13:49     Разобрать блок приведенного кода #5
Цитата Сообщение от Aspirin Посмотреть сообщение
А какой в этом смысл? Почему бы не занести в тело конструктора?
Инициализация != присваивание.
Во втором случае сначала вызвается конструктор по умолчанию, затем оператор присваиавния.
+ Константам ничего нельзя присвоить - допустима только инициализация.
Aspirin
29 / 6 / 0
Регистрация: 05.10.2012
Сообщений: 117
24.08.2014, 14:17  [ТС]     Разобрать блок приведенного кода #6
Вроде понял. Тогда ещё вопрос, в моем примере есть mPlayer(), т.е. вызов конструктора, а разве он не создается когда мы объявляем его в описании класса?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2014, 14:23     Разобрать блок приведенного кода
Еще ссылки по теме:

Разобрать строку кода C++
C++ For each с массивом символов - выяснить причину неработоспособности приведенного кода
Разобрать строку кода C++

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

Или воспользуйтесь поиском по форуму:
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
24.08.2014, 14:23     Разобрать блок приведенного кода #7
Aspirin, создался бы. Скорее всего, явно прописано для единообразия.
Yandex
Объявления
24.08.2014, 14:23     Разобрать блок приведенного кода
Ответ Создать тему
Опции темы

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