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

Перегрузка операторов - Оба случая работают правильно, почему так? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перевод букв и чисел в двоичную систему счисления http://www.cyberforum.ru/cpp-beginners/thread1245989.html
Здравствуйте, как сделать на C++ перевод букв и чисел двоичную систему счисления ?
C++ Чтение данных из текстового файла Помогите пожалуйста! Питаюсь создать консольную програму и никак не пойму как прочесть из файла, ну например: есть файл noname.txt и в ньом написана цифра 1, как сделать штоб програма считивая файл... http://www.cyberforum.ru/cpp-beginners/thread1245981.html
Вывод информации на экран в случае применения классов на С++ C++
Здравствуйте! Подскажите, пожалуйста, в таком вопросе. Пытаюсь написать элементарную программу с применением классов на С++, но в ней не выводится результат вычислений. Подскажите, пожалуйста, почему...
Что надо сделать, чтобы консоль после вызова не закрывалась C++
Как раньше делал , но забыл
C++ Код нормально компилируется но работает не весь http://www.cyberforum.ru/cpp-beginners/thread1245940.html
Здравствуйте, уважаемые форумчане! Итак есть программа, которая нормально компилируется, но при запуске работает не как задумано. (Говно)кодить начал недавно поэтому прошу не ругаться :D К тому же...
C++ Ошибка определения специализации шаблонного класса На этом месте вылазит ошибка: Error 1 error C3413: 'MyClass<int>' : invalid explicit instantiation template class MyClass<int> #include <iostream> using namespace std; template <class... подробнее

Показать сообщение отдельно
Gygocopter
10 / 10 / 5
Регистрация: 05.02.2014
Сообщений: 124

Перегрузка операторов - Оба случая работают правильно, почему так? - C++

22.08.2014, 22:19. Просмотров 277. Ответов 5
Метки (Все метки)

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include "stdafx.h"
#include <iostream>
#include "conio.h"
#include "windows.h"
using namespace::std;
class Int{
private:
    int i;
public:
    Int() :i(0)
    {}
    Int(int ii) :i(ii)
    {}
    void putInt()
    {cin >> i;}
    void getInt()
    {cout << i;}
    operator int()
    {return i;}
    Int operator+(Int i2)
    {
        return checkit(long double(i) + long double(i2));
    }
    Int operator-(Int i2)
    {
        return checkit(long double(i) - long double(i2));
    }
    Int operator*(Int i2)
    {
        return checkit(long double(i) * long double(i2));
    }
    Int operator/(Int i2)
    {
        return checkit(long double(i) / long double(i2));
    }
    Int checkit(long double answer)
    {
        if (answer>2147483647.0L || answer<-2147483647.0L)
        {
            cout << "\nОшибка\n";
            Sleep(2000);
            exit(EXIT_FAILURE);
        }
        return Int(int(answer));
    }
};
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(0, "Rus");
    Int alpha = 999999, beta = 990000, delta, gamma;
    gamma = alpha * beta;
    gamma.getInt();
    _getch();
    return 0;
}
Не понимаю, почему работает строчка long double(i2), ведь i2 - это созданный пользователем тип, как он приводится к long double? Я считаю, что должно быть не i2, i2.i -это уже число. Оба случая работают правильно, почему так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru