1. В классе Point перегрузить одноместные операции: “++” и “--” . Продемонстрировать в главной программе использование этих операций. Результаты вывести. Операция “++” описывается внутри класса, а операция “--” описывается вне класса.
2. В классе Point перегрузить двуместные операции: “+” и “-” . Продемонстрировать в главной программе использование этих операций. Результаты вывести. Операция “-” описывается внутри класса, а операция “+” описывается вне класса.
Другие языки программирования и технологии
C++. Перегрузка
#include <iostream>
using namespace std;
class point {
public:
point() : x(0) { }
point(int _x) : x(_x) { }
int get_point();
void set_point(int);
void show_point();
void operator++();
void operator--();
void operator++(int);
void operator--(int);
point const operator+(point const &)const;
point const operator+(int)const;
point const operator-(point const &)const;
point const operator-(int)const;
private:
friend point const operator+(int, point const &);
friend point const operator-(int, point const &);
int x;
};
int main() {
point pt;
pt.set_point(5);
pt.show_point(); // 5
pt++;
pt.show_point(); // 6
pt--;
pt.show_point(); // 5
++pt;
pt.show_point(); // 6
--pt;
pt.show_point(); // 5
const point pt2(7);
pt = pt + pt2;
pt.show_point(); // 12
pt = pt - 25;
pt.show_point(); // -13
point pt3 = -12 + pt2;
pt3.show_point(); // -5
cin.get();
return 0;
}
int point::get_point() { return x; }
void point::set_point(int _x) { x = _x; }
void point::show_point() { cout << " x = " << x << endl; }
void point::operator++() { x++; }
void point::operator--() { x--; }
void point::operator++(int) { x++; }
void point::operator--(int) { x--; }
point const point::operator+(point const & _point)const { return point(x + _point.x); }
point const point::operator+(int _scalar)const { return point(x + _scalar); }
point const operator+(int _scalar, point const & _point) { return point(_scalar + _point.x); }
point const point::operator-(point const & _point)const { return point(x - _point.x); }
point const point::operator-(int _scalar)const { return point(x - _scalar); }
point const operator-(int _scalar, point const & _point) { return point(_scalar - _point.x); }
using namespace std;
class point {
public:
point() : x(0) { }
point(int _x) : x(_x) { }
int get_point();
void set_point(int);
void show_point();
void operator++();
void operator--();
void operator++(int);
void operator--(int);
point const operator+(point const &)const;
point const operator+(int)const;
point const operator-(point const &)const;
point const operator-(int)const;
private:
friend point const operator+(int, point const &);
friend point const operator-(int, point const &);
int x;
};
int main() {
point pt;
pt.set_point(5);
pt.show_point(); // 5
pt++;
pt.show_point(); // 6
pt--;
pt.show_point(); // 5
++pt;
pt.show_point(); // 6
--pt;
pt.show_point(); // 5
const point pt2(7);
pt = pt + pt2;
pt.show_point(); // 12
pt = pt - 25;
pt.show_point(); // -13
point pt3 = -12 + pt2;
pt3.show_point(); // -5
cin.get();
return 0;
}
int point::get_point() { return x; }
void point::set_point(int _x) { x = _x; }
void point::show_point() { cout << " x = " << x << endl; }
void point::operator++() { x++; }
void point::operator--() { x--; }
void point::operator++(int) { x++; }
void point::operator--(int) { x--; }
point const point::operator+(point const & _point)const { return point(x + _point.x); }
point const point::operator+(int _scalar)const { return point(x + _scalar); }
point const operator+(int _scalar, point const & _point) { return point(_scalar + _point.x); }
point const point::operator-(point const & _point)const { return point(x - _point.x); }
point const point::operator-(int _scalar)const { return point(x - _scalar); }
point const operator-(int _scalar, point const & _point) { return point(_scalar - _point.x); }
Цена вопроса?
Откуда такое задание.. . Я походу ничего не понял, но попробую рассказать поверхностно: ++ и -- -это инкремент и декремент, т. е. увеличение и уменьшение на единицу, а что такое + и - наверно объяснять не стоит.. . То, что описывается в классе, будет в нем локально исполнятся, что вне - глобально.
Возможно я пояснил не то, что нужно или не так?
Возможно я пояснил не то, что нужно или не так?
По-моему довольно банальные задания, примеров по интернетам море.
По поводу перегрузки "вне класса" гуглите в сторону friend-функций.
И читать книги, много читать книг хороших и разных! Иначе все это пустая трата времени и нервов. Тогда тратьте лучше деньги =)
По поводу перегрузки "вне класса" гуглите в сторону friend-функций.
И читать книги, много читать книг хороших и разных! Иначе все это пустая трата времени и нервов. Тогда тратьте лучше деньги =)
Игорь Трофимчук
Каких friend-функций? Если вне класса то к кому должен быть оператор другом?
Нужно всеголишь взять два параметра, вместо одного.
А когда внутри класса идет объявление то у нас есть this.
Нужно всеголишь взять два параметра, вместо одного.
А когда внутри класса идет объявление то у нас есть this.
Похожие вопросы
- C++ Помогите, не работает перегрузка
- Подскажите про перегрузку/переопределение C#
- Перегрузка оператора в C++
- Зачем нужна перегрузка операторов? Можете написать код для большей усваимости C#
- Перегрузка сложения в С++
- Учусь програмировать на C++ по книге "C++ для чайников".Проблема.
- Зачем нужен C++, если есть C?
- Помогите срочно C#
- Помогите исправить ошибку в программе (c++).
- Ещё тупой вопрос по C++ :)
pt3.show_point(); // -19