Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / why friend functions / 7 сообщений из 7, страница 1 из 1
15.02.2007, 13:13
    #34333084
Paradoxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
why friend functions
Привет всем !!!

Мучает вопрос, может даже и примитивный ;).

Почему во время перегрузки операторов предпочетают использовать friend func а не member func.
В чем плюс friend func ??
...
Рейтинг: 0 / 0
15.02.2007, 13:30
    #34333176
Unknowner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
why friend functions
Сейчас книги под рукой нет, но если я не ошибаюсь, friend function используют при множественном наследовании классов...
...
Рейтинг: 0 / 0
15.02.2007, 13:52
    #34333262
why friend functions
для операторов-членов первый аргумент должен быть строго самого класса, неявные преобразования не допускаются

в отличии от операторов-свободных функций
...
Рейтинг: 0 / 0
15.02.2007, 14:35
    #34333489
Paradoxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
why friend functions
Голенков Владимирдля операторов-членов первый аргумент должен быть строго самого класса, неявные преобразования не допускаются

в отличии от операторов-свободных функций

Выходит, что во время использования операторов-членов, у меня всегда должен быть один параметер типо:
Код: plaintext
1.
2.
Test operator + (Test& Var) 
{     return Test(Var.x + this->x, Var.y + this->y) };
а ето нельзя (error C2804: binary 'operator +' has too many parameters)??
Код: plaintext
1.
2.
Test operator + (Test& Var1, Test& Var2)
{      return Test(Var1.nHour + Var2->nHour, Var1.nMin + Var2->nMin);	};

Я так понял, что всегда должен быть один параметер.
...
Рейтинг: 0 / 0
15.02.2007, 14:42
    #34333528
why friend functions
выражение a + b в случае оператора-члена равносильно a.operator+(b)
а для свободной функции: operator+(a, b)

в этом и есть разница: аргумент a в первом случае должен быть строго типа класса, во втором случае (ежели не explicit) то может быть неявно приводим к типу класса
...
Рейтинг: 0 / 0
15.02.2007, 15:36
    #34333844
Paradoxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
why friend functions
Спасибо !
...
Рейтинг: 0 / 0
15.02.2007, 16:26
    #34334103
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
why friend functions
Paradoxx пишет:

> Почему во время перегрузки операторов предпочетают использовать friend
> func а не member func.

Это не так. Для каких-то операторов применяются только member functions,
для каких-то - можно и так, и так.

> В чем плюс friend func ??

В том, что она симметрична по отношению к своим аргументам. Остальное кажись уже
сказали.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / why friend functions / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]