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

Приведение типов? - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.94
KeyGen
 Аватар для KeyGen
333 / 289 / 6
Регистрация: 07.08.2011
Сообщений: 789
Записей в блоге: 1
04.11.2011, 20:32     Приведение типов? #1
Подскажите, пожалуйста что происходит. Не понимаю почему такой код работает.
.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Km
{
private:
        static const double DIFFERENCE = 1.2;
        double kilometer;
        double mili;
 
public:
...
       friend void operator+=(Km & k, const Km & t); //<--
...
       
       friend std::ostream & operator<<(std::ostream & os, const Km & t);
};
.cpp
C++
1
2
3
4
5
6
7
...
     void operator+=(Km & k, const Km & t)
     {
            k.kilometer=k.kilometer-t.kilometer;
            k.mili=k.mili-t.kilometer;
     }
...
main
C++
1
2
3
4
5
6
7
8
9
10
...
    Km mili=50;
    Km km=20;
    
    km+=mili;                 //Вот тут все понятно
    cout << endl << km; 
    
    km+=10;   //А вот тут не понятно, у меня мысли только о автоматическом приведении типов
    cout << endl << km; 
...
Зарание спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2011, 20:32     Приведение типов?
Посмотрите здесь:

C++ Приведение типов
Приведение типов C++
Приведение типов C++
C++ Приведение типов.
C++ Приведение типов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
KeyGen
 Аватар для KeyGen
333 / 289 / 6
Регистрация: 07.08.2011
Сообщений: 789
Записей в блоге: 1
04.11.2011, 23:46  [ТС]     Приведение типов? #21
PraZuBeR,
Миниатюры
Приведение типов?  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Chelioss
04.11.2011, 23:50
  #22

Не по теме:

KeyGen
Что за книга?

prazuber
108 / 108 / 3
Регистрация: 29.04.2010
Сообщений: 240
04.11.2011, 23:52     Приведение типов? #23
KeyGen, это пруф того, что я прав?

Последнее предложение, в конце страницы:
Однако подобным образом невозможно хранить константу типа double.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
04.11.2011, 23:53     Приведение типов? #24
Цитата Сообщение от PraZuBeR Посмотреть сообщение
Однако подобным образом невозможно хранить константу типа double.
Почему int можно, а double нет? Странно все это.
KeyGen
 Аватар для KeyGen
333 / 289 / 6
Регистрация: 07.08.2011
Сообщений: 789
Записей в блоге: 1
04.11.2011, 23:57  [ТС]     Приведение типов? #25
PraZuBeR, Но работает же...
prazuber
108 / 108 / 3
Регистрация: 29.04.2010
Сообщений: 240
05.11.2011, 00:00     Приведение типов? #26
Chelioss, потому что static const члены считаются на этапе компиляции. Компилятор не может высчитывать вещественные числа. Кстати, именно static const, наравне с enum, широко используются в метапрограмировании на C++.

KeyGen, какой компилятор вы используете?
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
05.11.2011, 00:07     Приведение типов? #27
Цитата Сообщение от PraZuBeR Посмотреть сообщение
static const члены считаются на этапе компиляции.
Под них даже память не выделяется (если нигде не берется адрес), значения просто подставляются в места использования.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2011, 00:11     Приведение типов?
Еще ссылки по теме:

Приведение типов C++
Приведение типов C++
C++ Приведение типов

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

Или воспользуйтесь поиском по форуму:
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
05.11.2011, 00:11     Приведение типов? #28
Цитата Сообщение от PraZuBeR Посмотреть сообщение
Компилятор не может высчитывать вещественные числа.
Цитата Сообщение от Net_Wanderer Посмотреть сообщение
Под них даже память не выделяется, значения просто подставляются в места использования.
Понятно. Хотя странно, ведь если они просто подставляются, то значит они как-то компилятором вычитались.
Yandex
Объявления
05.11.2011, 00:11     Приведение типов?
Ответ Создать тему
Опции темы

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