Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
racer888
0 / 0 / 2
Регистрация: 01.04.2013
Сообщений: 33
#1

Перегрузка операций: friend-функция или функция-член класса - C++

27.08.2015, 18:01. Просмотров 404. Ответов 1
Метки нет (Все метки)

Здравствуйте, меня интересует вопрос, в чем разница при перегрузке операторов через operator и friend. Вот к примеру такой код.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class vek
{
public:
        struct
        {
            int x, y, z;
        };
vek() : x(0), y(0), z(0) {}
vek(int _x, int _y, int _z) : x(_x), y(_y), z(_z){}
friend vek operator+ (vek& v, vek& v1)
        {
            return vek(v1.x + v.x, v1.y + v.y, v1.z + v.z);
        }
    //---------------------------------------------------------------------------------------------
vek operator- (vek& v)
        {
            return vek(x - v.x, y - v.y, z - v.z);
};
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.08.2015, 18:01
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Перегрузка операций: friend-функция или функция-член класса (C++):

Перегрузка операторов, friend или нет friend?
Всем здравствуйте. Есть такой вопрос: при перегрузке операторов в классе(пусть...

Сам вопрос: почему функция-член одного класса не вызывается из функции-члена другого класса?
//Щас всё объясню. Так, имеем два класса, в одном я определил функцию-член. Все...

Не функция-член класса
Фрагмент из книги, об дружественной функции operator<<: "Обратите внимание,...

Функция-член шаблонного класса
Как правильно объявить функцию-член шаблонного класса? Класс: template...

Член-функция класса не работает
Доброго вечера! Только что написал вот такой несложный класс, который...

Не срабатывает функция-член класса
Есть следующий код: #include "stdafx.h" #include <Windows.h> #include...

1
zss
Модератор
Эксперт С++
6959 / 6521 / 4139
Регистрация: 18.12.2011
Сообщений: 17,209
Завершенные тесты: 1
27.08.2015, 21:04 #2
На мой взгляд, в этом случае разница только в инкапсуляции.
Однако, иногда без friend не обойтись.
Например, нельзя сделать членом класса операции извлечения из потока и запись в поток,
т.к. слева от << стоит потоковая переменная, а не экземпляр класса.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2015, 21:04
Привет! Вот еще темы с решениями:

Функция-член Ошибка класса
Непонятная ошибка связанная с функцией-членом. Я в панике + почему-то не могу...

Непонятно работает функция - член класса
Задача создать телефонный справочник с использованием бинарного дерева....

Функция-друг одно класса, член другого.
Привет. Не поможете как сделать чтобы функция одного класса была...

И снова класс Матрицы с функция-член класса для нахождения определителя
Проблема в следующем испробовал все варианты, которые закомментированы, все...


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

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

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