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

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

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

Перегрузка операторов в классе - C++

06.04.2014, 04:05. Просмотров 322. Ответов 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
class Point {
public:
  Point(void) : x(0), y(0) {}
  Point(double ix, double iy) : x(ix), y(iy) {}
  void print() {
    cout << "(" << x << "," << y << ")" << endl;
  }
  Point operator+(const double &a) {[COLOR="Lime"] //тут я поставила x = x + 5 . на экране было все верно кроме последнего - дистанции. Что еще надо изменить чтобы задание было выполнено правильно?[/COLOR]
... }
  // посчитайте дитанцию между двумя точками
  // sqrt((x1-x2)^2 + (y1-y2)^2))
  friend double operator-(const Point &a, const Point &b);
private:
  double x, y;
};
Внедрите орераторы overloading  + и - чтобы программа давала такой исход:
int main() {
  Point p1(10,20);
  Point p2(4,6);
  p1.print();
  p2.print();
  p1 = p1 + 5;
  p1.print();
  double d = p2 - p1;
// На экране: (10,20)
// На экране: (4,6)
// На экране: (15,20)
  cout << “дистанция:<< d << endl;   // На экране - дистанция: 17.8045
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.04.2014, 04:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка операторов в классе (C++):

Перегрузка операторов в классе - C++
Здравствуйте. Написал класс: template &lt;class T&gt; class LIST { private: T* listP; uint lSize; public:

Ошибка в классе матриц (перегрузка операторов) - C++
уважаемые форумчане, помогите, пожалуйста, найти ошибку в коде пишу класс на матрицы довольно объемный по содержанию, во всяком случае...

Перегрузка операторов из дружеской функции в шаблонном классе - C++
Скомпилировал http://dmtsoft.ru/bn/370/as/oneaticleshablon/. Как только перенёс в свой шаблонный класс почти весь этот исходник перестали...

Перегрузка операторов ввода и вывода из потока в шаблонном классе - C++
Доброго времени суток. Пишу свой вектор. В нём надо перегрузить вышеназванные операторы. Vector.h class Vector { // ... ...

Перегрузка операторов в классе "Последовательность целых чисел" - C++
Добрый день! Столкнулся с таким заданием: &quot;Создать класс «последовательность целых чисел». Элементы последовательности хранить в...

Что такое "перегрузка операторов"? Каковы принципы работы перегруженных операторов и назначение указателя this - C++
Добрый день . Помогите понять принцип работы перегрузки операторов. объясните пожалуйста в зависимости от чего зависит агрумент при...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
06.04.2014, 14:08 #2
Цитата Сообщение от annichka Посмотреть сообщение
Пожалуста помотрите на класс, представьте что все нужные заголовки включены
Посмотрели, представили. Чем-то ещё Вам помочь?
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
06.04.2014, 15:04 #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Метод print добавьте сами -- рука не поднимается.
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 <cmath>
#include <iomanip>
#include <iostream>
 
class Point {
 public:
  Point() : x(0), y(0) {}
  Point(double x, double y) : x(x), y(y) {}
  double getX() const { return x; }
  double getY() const { return y; }
 
  double getDistanceTo(const Point &other) const {
    return std::sqrt(std::pow(getX() - other.getX(), 2.) +
      std::pow(getY() - other.getY(), 2.));
  }
  
  friend Point operator+(const Point &point, double x) {
    return Point(point.getX() + x, point.getY());
  }
 
  friend double operator-(const Point &a, const Point(b)) {
    return a.getDistanceTo(b);
  }
 
  friend std::ostream &operator<<(std::ostream &stream, 
    const Point &point) {
    return stream << "(" << 
      std::fixed << std::setprecision(3) <<
      point.getX() << "," << 
      std::fixed << std::setprecision(3) <<
      point.getY() << ")";
  }
 private:
  const double x;
  const double y;
};
 
int main(int, char**) {
  Point a(1, 1), b(3, 3);
  std::cout << "Distance from " << a  << " to " << b << " is " <<
    (a - b) << std::endl;
  std::cout << a << " + " << 5 << " = " << (a + 5) << std::endl;
  return 0;
}
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
06.04.2014, 15:24 #4
lemegeton, есть ли смысл в get-методах (и сокрытии данных), когда все поля константы?
Цитата Сообщение от lemegeton Посмотреть сообщение
Метод print добавьте сами
и коммутативность сложения
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
06.04.2014, 16:06 #5
Цитата Сообщение от Tulosba Посмотреть сообщение
и коммутативность сложения
Да, и коммутативность сложения.

Цитата Сообщение от Tulosba Посмотреть сообщение
lemegeton, есть ли смысл в get-методах (и сокрытии данных), когда все поля константы?
Есть. Инкапсуляция же. Ну можно еще вообразить снятие конста и наследование.
annichka
0 / 0 / 0
Регистрация: 04.04.2014
Сообщений: 4
07.04.2014, 14:05  [ТС] #6
ого, мы такое еще не учили спасибо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2014, 14:05
Привет! Вот еще темы с ответами:

Объявление операторов в классе - C++
Всем привет, объясните простым языком, когда используется ссылка(&amp;) и когда не используется. Вот например: Fraction&amp; operator += (const...

Создание операторов в классе - C++
Создайте в классе Circle операторы &lt; и = = для сравнения объектов типа Circle по величине радиуса itsRadius.

Перегрузка операторов - C++
Ошибка: &quot;error: invalid operands to binary expression ('Number *' and 'Number *') n3 = n1 * n2;&quot; class Number { public: ...

перегрузка операторов - C++
на примере класса Line не получается правильно и без ошибок перегрузить следующие операторы ==, &lt;, !=, &lt;&lt;. с = и вроде справился, с...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.04.2014, 14:05
Ответ Создать тему
Опции темы

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