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

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

Войти
Регистрация
Восстановить пароль
 
p1ka4y777
2 / 2 / 0
Регистрация: 04.10.2013
Сообщений: 155
#1

Перегрузка оператора *= - C++

13.12.2013, 23:37. Просмотров 241. Ответов 3
Метки нет (Все метки)

как для заданного класса point перегрузить оператор *= всеми возможными способами (член класса, друг класса)?
P.S. оператор *= должен быть применен для двух объектов класса point, он осуществляет умножения соответствующих координат точек и запись полученных результатов в координаты первой точки
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class point
{
    int *x, *y, *z;
public:
    point(int c1 = 0, int c2 = 0, int c3 = 0)
    {
        x = new int(c1);
        y = new int(c2);
        z = new int(c3);
    }
    ~point()
    {
        delete x;
        delete y;
        delete z;
    }
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2013, 23:37     Перегрузка оператора *=
Посмотрите здесь:

Перегрузка оператора - C++
Здравствуйте. Не могу разобраться, как перезагрузить оператор >>. int a; cin >> a; Надо, чтобы a умножалось на некое число,...

Перегрузка оператора [] - C++
Проблема в том, что надо обязательно использовать вид obj, а не obj.arr. Иначе всё работает) #include<iostream> using namespace std; ...

перегрузка оператора - C++
Помогите,пожалуйста! у меня есть класс Gruppa, куда входят студенты (фамилия,номер группы,успеваемость,номер зачетки) подскажите как...

Перегрузка оператора - C++
Здравствуйте! Помогите разобраться с перегрузкой операторов. Суть задания: Осуществите перегрузку оператора “++” так, чтобы при его...

Перегрузка оператора ++ - C++
Нужно создать операторы префиксного и постфиксного инкремента для приращения переменной itsRadius класса SimpleCircle. Переменная itsRadius...

Перегрузка оператора - C++
Привет, форумчане. Есть простой класс, в котором перегружается оператор '==' : #ifndef POINT_H #define POINT_H class point{ ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
13.12.2013, 23:56     Перегрузка оператора *= #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
#include <iostream>
 
struct point3d
{
    int x; 
    int y;
    int z;
 
    point3d(int x = 0, int y = 0, int z = 0)
    : x(x)
    , y(y)
    , z(z)
    {
    }
    
    point3d& operator *= (const point3d& other)
    {
        x *= other.x;
        y *= other.y;
        z *= other.z;
        
        return *this;
    }
};
 
point3d operator * (const point3d& a, const point3d& b)
{
    return point3d(a) *= b;
}
 
std::ostream& operator << (std::ostream& os, const point3d& point)
{
    return (os << "point3d(" << point.x << ',' << point.y << ',' << point.z << ')');
}
 
int main() 
{
    point3d a(1, 3, 5), b(2, 1, 0);
    std::cout << (a *= b) << '\n';
    std::cout << a * b;
    return 0;
}
p1ka4y777
2 / 2 / 0
Регистрация: 04.10.2013
Сообщений: 155
14.12.2013, 00:01  [ТС]     Перегрузка оператора *= #3
спасибо, добрый человек)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2013, 20:13     Перегрузка оператора *=
Еще ссылки по теме:

Перегрузка оператора ++ - C++
Что делает оператор ++ при его перегрузке?

Перегрузка оператора () - C++
Никак не могу разобраться с перерузкой оператора () и в литературе не могу найти доходчивое объяснение: Есть перегрузка оператора () Есть...

Перегрузка оператора () - C++
Привет всем помогите придумать способ реализаци следущей задачи: есть класс симметричная матрица: class Matrix { ...

Перегрузка оператора << - C++
Доброе время суток! Возникло осложнение с лабой. Нужно перегрузить оператор &lt;&lt; так, чтобы при помощи него можно было копировать информацию...

Перегрузка оператора << - C++
Добрый пень! подскажите как написать код для реалилизации следующего требования: SpecialPrint &lt;&lt; &quot;text&quot; &lt;&lt; 'a' &lt;&lt; 1; ...

Перегрузка оператора + - C++
Доброго времени суток. Есть программа, создающая связный список, который содержит числа по возрастанию #include &lt;iostream&gt; enum...


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

Или воспользуйтесь поиском по форуму:
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
14.12.2013, 20:13     Перегрузка оператора *= #4
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <windows.h>
#include <stdio.h>
#include <iostream>
using namespace std;
 
 
class point
{
    int *x, *y, *z;
public:
    point(int c1 = 0, int c2 = 0, int c3 = 0)
    {
        x = new int(c1);
        y = new int(c2);
        z = new int(c3);
    }
 
//     point& operator*=(const point &pt) {
//     *x*= *pt.x;
//     *y*= *pt.y;
//     *z*= *pt.z;
//     
//     printf ("Почему-то компилятор выбирает эту функцию\n*x= %d\n", *x);
//    
//     return *this;
//    }
 
    friend point& operator*=(point &, const point &);
 
 
    friend ostream& operator << (std::ostream& os, const point& point);
 
    ~point()
    {
        delete x;
        delete y;
        delete z; 
    }
};
 
//Реализация
 
point& operator*=(point &pt_0, const point &pt_1) {
     *pt_0.x*= *pt_1.x;
     *pt_0.y*= *pt_1.y;
     *pt_0.z*= *pt_1.z;
     printf ("А эту выбирает, только если функцию-метод класса закомментить\n");
     return pt_0;
}
 
 
    ostream& operator << (std::ostream& os, const point& point)
    {
      return (os << "point(" << *point.x << ',' << *point.y << ',' << *point.z << ')');
    }
 
 
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
int main()
{
 SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
 
    point a(1, 3, 5), b(2, 1, 0);
    cout << a << '\n';
    cout << (a *= b) << '\n';
 
  getchar ();
  return 0;
}
Функция-член класса закомменчена. Использовать либо её, либо ружественную функцию, иначе линкёр ругается.
Yandex
Объявления
14.12.2013, 20:13     Перегрузка оператора *=
Ответ Создать тему
Опции темы

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