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

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

Восстановить пароль Регистрация
 
annichka
0 / 0 / 0
Регистрация: 04.04.2014
Сообщений: 4
06.04.2014, 04:05     Перегрузка операторов в классе #1
Привет всем снова! Пожалуста помотрите на класс, представьте что все нужные заголовки включены.
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)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.04.2014, 14:08     Перегрузка операторов в классе #2
Цитата Сообщение от annichka Посмотреть сообщение
Пожалуста помотрите на класс, представьте что все нужные заголовки включены
Посмотрели, представили. Чем-то ещё Вам помочь?
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
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
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.04.2014, 15:24     Перегрузка операторов в классе #4
lemegeton, есть ли смысл в get-методах (и сокрытии данных), когда все поля константы?
Цитата Сообщение от lemegeton Посмотреть сообщение
Метод print добавьте сами
и коммутативность сложения
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
06.04.2014, 16:06     Перегрузка операторов в классе #5
Цитата Сообщение от Tulosba Посмотреть сообщение
и коммутативность сложения
Да, и коммутативность сложения.

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

Текущее время: 00:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru