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

Перегрузка постфиксной и префиксной операции инкремента - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ выводит не правильные символы http://www.cyberforum.ru/cpp-beginners/thread914685.html
только начал изучать С++.помогите пожалуйста исправить ошибку в коде, и если можно объяснить, так как я новичок.Спасибо. // #include "stdafx.h" #include "stdio.h" #include <iostream> using...
C++ Автоматическое редактирование кода в Visual Studio Express Скажите пожалуйста, есть ли в Visual Studio Express, автоматическое редактирование кода? Т.Е. как в Embarcadero RAD Studio XE горячая клавиша ctrl + D (Format Sourse) - текстовый редактор... http://www.cyberforum.ru/cpp-beginners/thread914684.html
Оптимизация программы C++
Ув. обыватели, Вчера написал "Калькулятор", но так как я ещё зеленый в программировании на С++, прошу вас показать как и где можно оптимизировать нижеизложенный код. #include <iostream> using...
C++ Матрица, найти ошибку
// Дана прямоугольная таблица a. Найти минимальный из максимумов строк. #include "stdafx.h" #include <stdio.h> #include <conio.h> #include <stdlib.h> typedef int *pint; //новый тип...
C++ работа массивов си ++ http://www.cyberforum.ru/cpp-beginners/thread914648.html
При изучении работы массивов возник вопрос. В первой части отрывка кода производится присвоение массиву "from" значений и вывод их на экран(от 0 до 49). Затем вывожу на экран эти значения с...
C++ Реализация Filter Cloud в Photoshop Интересует source code данного фильтра. Может где-то в интернетах есть выложенный (либо этот, либо аналогичный по результату и скорости выполнения) или как-то можно декомпилировать из самого... подробнее

Показать сообщение отдельно
coloc
погромист
410 / 246 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1

Перегрузка постфиксной и префиксной операции инкремента - C++

29.06.2013, 18:47. Просмотров 738. Ответов 2
Метки (Все метки)

Здравствуйте! У меня возник вопрос: почему выводит разный результат, казалось бы, одинаковый код

Вот здесь выводит как должно:
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
#include <iostream>
 
class Test
{
    friend std::ostream& operator<<( std::ostream &out, const Test &a ) {
        out << a.x;
        return out;
    }
    
    public:
        Test( int a = 0 ) : x( a ) {}
        
        Test& operator++() {
            x++;
            return *this;
        }
        Test& operator--() {
            x--;
            return *this;
        }
        
        Test operator++( int a = 0 ) {
            Test ab = *this;
            x++;
            return ab;
        }
        Test operator--( int a = 0 ) {
            Test ab = *this;
            x--;
            return ab;
        }
        
    private:
        int x;
};
 
int main() {
    Test a;
    
    std::cout << "a: " << a;
    std::cout << std::endl;
    std::cout << "++a: " << ++a;
    std::cout << std::endl;
    std::cout << "a: " << a;
    std::cout << std::endl;
    std::cout << "a++: " << a++;
    std::cout << std::endl;
    std::cout << "a: " << a;
 
    return 0;
}
А вот здесь хр*н знает откуда двойки взялись
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
#include <iostream>
 
class Test
{
    friend std::ostream& operator<<( std::ostream &out, const Test &a ) {
        out << a.x;
        return out;
    }
    
    public:
        Test( int a = 0 ) : x( a ) {}
        
        Test& operator++() {
            x++;
            return *this;
        }
        Test& operator--() {
            x--;
            return *this;
        }
        
        Test operator++( int a = 0 ) {
            Test ab = *this;
            x++;
            return ab;
        }
        Test operator--( int a = 0 ) {
            Test ab = *this;
            x--;
            return ab;
        }
        
    private:
        int x;
};
 
int main() {
    Test a;
    
        std::cout << "a: " << a << std::endl << "++a: " << ++a << std::endl
                  << "a: " << a << std::endl << "a++: " << a++ << std::endl
              << "a: " << a;
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru