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

Как работает данная программа - C++

Восстановить пароль Регистрация
 
KaridatMerkader
Сообщений: n/a
10.11.2010, 19:56     Как работает данная программа #1
изучаю тему преобразования типов (в данном случае тип Counter преобразуется в int)
и вот набрала код из книги, но не понимаю как он работает и почему:
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
27
28
29
30
31
32
33
#include <iostream>
 
class Counter
{
public:
    Counter();
    Counter(int val);
    ~Counter() {}
    int GetItsVal() const { return itsVal; }
    void SetItsVal(int x) { itsVal = x; }
    operator unsigned short();
private:
    int itsVal;
};
 
Counter::Counter():itsVal(0)
{}
 
Counter::Counter(int val): itsVal(val)
{}
 
Counter::operator unsigned short ()
{
    return (int (itsVal));
}
 
int main()
{
    Counter ctr(5);
    int theShort = ctr;
    std::cout << "theShort: " << theShort << std::endl;
    return 0;
}
Помогите, пожалуйста, разобраться как именно работает этот кусочек:
C++
1
2
3
4
Counter::operator unsigned short ()
{
    return (int (itsVal));
}
Функция ничего не получает и ничего не возвращает...
Я даже не понимаю, как она вызывается (а она же вызывается в main).
Я не понимаю строчку return (int (itsVal)); -- зачем указывать что itsVal должна быть типа int, если она и так int.
В моём понимании нужно просто вызвать функцию GetItsVal(), которая и возвращает нужный тип.
Так, как же это работает?
Разъясните, пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2010, 19:56     Как работает данная программа
Посмотрите здесь:

Не могу разобраться как работает данная программа C++
Что данная программа на печатает на screen? C++
Что делает данная программа? C++
Что находит данная программа? C++
Что выведет данная программа? C++
C++ В каком случае данная программа выведет слово “Yes” ?
В каком случае данная программа выведет слово ДА C++
C++ Arrays, как работает данная программа?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
11.11.2010, 00:06     Как работает данная программа #2
KaridatMerkader,
C++
1
Counter::operator unsigned short ()
Оператор преобразования типа. Поищите темку на форуме, была довольно обширная. Я там скидывал довольно большой текст про это.
Возвращает она объект типа unsigned short. В приведении к типу int я тоже не вижу смысла. Не думаю что что-то изменится, если не привести.

Вызывается она тут:
C++
1
int theShort = ctr;
Только в таком случае я не вижу смысла в перегрузке именно unsigned short а не int. Вообщем по сути код просто для примера.

Собственно unsigned short гарантировано меньше int-a, посему преобразование безопасно насколько я понимаю.

Добавлено через 15 минут
Что за перегруженный оператор char* ()?
Нашел тему. Прогоните последнюю страницу, там есть цитаты и ссылка на сайт тоже есть.
Yandex
Объявления
11.11.2010, 00:06     Как работает данная программа
Ответ Создать тему
Опции темы

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