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

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

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

перегрузка в с++ - C++

17.12.2012, 20:24. Просмотров 354. Ответов 8
Метки нет (Все метки)

Помогите нужно очень срочно!недавно писал о перегрузке
есть перегрузка постфиксного инкремента

C++
1
2
3
4
Rectang & operator ++(int)
{height++;
width++;
return *this;}
изменяя на

C++
1
2
3
4
void operator ++(int)
{height++;
width++;
}
не будет к примеру компилироваться (r++)++
где r произвольный объект

нужно показать, написав код в несколько строчек через вызов операторных функций, что (r++)++ не скомпилируется (задание дал преподаватель, я что-то не пойму что делать)

написавшему правильный ответ 100 на мобильник обещаю!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2012, 20:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос перегрузка в с++ (C++):

Перегрузка в виде метода VS Перегрузка в виде функции друг - C++
Привет! Собственно сабж: В каких случаях используется перегрузка в виде метода, а когда в виде функции друг? Добавлено через 4...

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов - C++
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры таких задач, если вдруг у вас они завалялись на компе или...

Перегрузка new - C++
Дайте примеры на перегрузку. #define n ... // Некая целая константа class a { ... }; // Некий класс a *p=new a; // Здесь должен быть...

перегрузка - C++
1 С помощью механизма перегрузки функций реализовать функции для нахождения суммы: 1) двух чисел (результат – число); 2) двух строк...

Перегрузка [][] - C++
Возможно ли для данного класса обеспечить перегрузку жвойных скобок с тем, чтобы в программе можно было использовать выражения типа: ...

перегрузка [] - C++
Есть класс, и почему компилятор выдает ошибку на функции int &operator(int); #ifndef ARRAY1_H #define ARRAY1_H #include...

8
David Sylva
1291 / 953 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
17.12.2012, 20:30 #2
Цитата Сообщение от McToNy Посмотреть сообщение
написавшему правильный ответ 100 на мобильник обещаю!
За деньги в другом разделе, решают. По заданию не понял, что надо показать?
0
McToNy
0 / 0 / 0
Регистрация: 29.05.2012
Сообщений: 20
17.12.2012, 21:17  [ТС] #3
что (r++)++ не скомпилируется, честно говоря сам не очень понял вопрос, нужно похоже задать произвольный объект r и показать что конструкция r++++ не скомпилируется, если оператор++ будет возвращать void

Добавлено через 2 минуты
знаю,что это что-то элементарное,код в несколько строчек
0
Smetanka
56 / 17 / 1
Регистрация: 14.05.2012
Сообщений: 134
17.12.2012, 22:09 #4
C++
1
2
3
4
void operator ++(int)
{height++;
width++;
}
более того этот код уже не скомпилируется) Вот вы представьте...применяете к объекту типа int оператор ++ и результат работы оператора будет void...какая то чушь...а как это показать? Да просто вставьте такой код в IDE и при компиляции покажите ошибки, которые появятся.
Ну и вот http://habrahabr.ru/post/132014/
0
McToNy
0 / 0 / 0
Регистрация: 29.05.2012
Сообщений: 20
17.12.2012, 23:40  [ТС] #5
Smetanka, ну это так препод написал, изменил мою программу.
0
Smetanka
56 / 17 / 1
Регистрация: 14.05.2012
Сообщений: 134
18.12.2012, 06:14 #6
McToNy, Да я понимаю, ах эти преподы))) Просто я к чему клоню.
раз это
C++
1
2
3
4
void operator ++(int)
{height++;
width++;
}
уже заранее неверная конструкция, то и программа с такой конструкцией даже не соберется.
0
Schizorb
510 / 462 / 16
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
Завершенные тесты: 1
18.12.2012, 08:06 #7
Цитата Сообщение от Smetanka Посмотреть сообщение
void operator ++(int)
{height++;
width++;}
уже заранее неверная конструкция,
Синтаксически-то она верная, скомпилируется нормально, в зависимости от того, как использовать.

McToNy, ну вот смотри. Если инкремент перегрузить по правилам.

Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <cstdlib>
using namespace std;
 
class Rectangle
{
public:
    Rectangle(int w, int h)
        :height(h), width(w)
    {};
    
    Rectangle & operator ++(int)
    {
        height++;
        width++;
        return *this;
    }
    
    int get_height() {return height;}
    int get_width() {return width;}
private:
    int height;
    int width;
};
 
 
int main()
{
    Rectangle r(10, 20);
    
    // нормальный вызов
    // сначала выполнится инкремент внутри скобок
    // он вернет ссылку на r
    // потом к ней будет применен второй инкремент
    (r++)++;
  
    // итого значения увеличились на 2
    cout << r.get_height() << " : " << r.get_width() << "\n";
    return 0;
}


А если сделать возвращаемым типом void, то вот такая конструкция будет выполняться нормально: r++. Но к ней второй инкремент уже применить нельзя: (r++)++ - ошибка
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <cstdlib>
using namespace std;
 
class Rectangle
{
public:
    Rectangle(int w, int h)
        :height(h), width(w)
    {};
    void operator ++(int)
    {
        height++;
        width++;
    }
    
    
    int get_height() {return height;}
    int get_width() {return width;}
private:
    int height;
    int width;
};
 
 
int main()
{
    Rectangle r(10, 20);
    
    // ошибочный вызов
    // сначала должен бы выполниться инкремент внутри скобок (r++)
    // но он будет возвращать void 
    // а для типа void не определен инкремент
    (r++)++;
  
    cout << r.get_height() << " : " << r.get_width() << "\n";
    return 0;
}
0
McToNy
0 / 0 / 0
Регистрация: 29.05.2012
Сообщений: 20
18.12.2012, 09:23  [ТС] #8
Schizorb спасибо большое,скинь номер,завтра покажу преподу,если верно будет то кину денег
0
Schizorb
18.12.2012, 09:25     перегрузка в с++
  #9

Не по теме:

Не по теме:

Цитата Сообщение от McToNy Посмотреть сообщение
если верно будет то кину денег
та забей))

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2012, 09:25
Привет! Вот еще темы с ответами:

Перегрузка +,-,++,-- - C++
Задание примерно такое: Создать класс линейного списка List. С помощью перегруженных операций реализовать: 1) переместиться в...

перегрузка [] - C++
Здравствуйте! код из учебного пособия. (возможно немного не рабочий) текст перед кодом- &quot;Пусть класс определен как строка символов....

перегрузка - C++
а чем отличаются перегрузка как метод и как функция?

Перегрузка в c++ - C++
Собственно для чего нужна перегрузка функций или операторов ?


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

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

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