Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
KaridatMerkader
0 / 0 / 0
Регистрация: 07.11.2010
Сообщений: 2
#1

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

10.11.2010, 19:56. Просмотров 401. Ответов 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(), которая и возвращает нужный тип.
Так, как же это работает?
Разъясните, пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2010, 19:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как работает данная программа (C++):

Arrays, как работает данная программа? - C++
Как работает данная программа?! Как я понимаю должны выйти значения от 0 к 4.Как здесь удалось int result += foo #include &lt;iostream&gt; ...

Не могу разобраться как работает данная программа - C++
Помогите пожалуйста разобраться как работает данная программа ниже дано задание и готовый листинг. Я запутался тут с этими указателями. ...

Прошу обьяснить как работает данная программа - C++
Условие:Дана строка символов, которые отделены друг от друга любым количеством пробелов. Удалить лишние пробелы(т.е. чтобы между символами...

Что делает данная программа? - C++
#include &lt;stdarg.h&gt; #include &lt;iostream.h&gt; #include &lt;conio.h&gt; void sum (char *fmt,...) { va_list ap; int a; double b; ...

Что выведет данная программа? - C++
int main() { int a = 1, b = 2; int *p1 = &amp;a; int *p2 = p1; p1 = &amp;b; printf ( &quot;%d %d&quot;,(*p1),(*p2) ); return 0; ...

Что делает данная программа? - C++
Здравствуйте! Откопал код программы, необходимо узнать, что она конкретно делает. Есть догадки, но хочу удостовериться, что думаю верно....

1
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 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* ()?
Нашел тему. Прогоните последнюю страницу, там есть цитаты и ссылка на сайт тоже есть.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2010, 00:06
Привет! Вот еще темы с ответами:

Что находит данная программа? - C++
int main() { int i, res = 0, f ; for ( i = 0; i &lt; 20; i++) scanf ( “%d”, &amp;f ); for ( i = 1; i &lt; 20; i++ ) if ( f &gt; f ) res =...

Что данная программа на печатает на screen? - C++
Подскажите, пл что данная программа на печатает на screen? int tenure = -5; if (tenure + 5) printf(&quot;Congratulations!&quot;); ...

В каком случае данная программа выведет слово “Yes” ? - C++
В каком случае данная программа выведет слово “Yes” ? int main() { int fl = 0; int f , i; for ( i = 0; i &lt; 20; i++ ) ...

В каком случае данная программа выведет слово ДА - C++
int main() { int fl = 0; int f , i; for (i = 0; i &lt; 20; i++) scanf ( &quot;%d&quot;, &amp;f ); for (i = 0; i &lt; 19; i++) if ( f ==...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.