| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > friend |
| Автор: Lotles 2.7.2010, 12:43 | ||
Зачем здесь friend
|
| Автор: RobinHoodPHD 2.7.2010, 13:22 |
| Бинарная операция определяемая внутри класса должна иметь 1 параметр, при этом вызвавший ее объект считается первым параметром. А Вам видимо нужно перегрузить * на случай "число*Point" поэтому ее объявили дружественной (дружественным функциям должна передаваться ссылка на объект тк this ей не передается), чтобы можно было задать 2 параметра . Как то так. |
| Автор: azesmcar 2.7.2010, 13:40 | ||||||||
| RobinHoodPHD слишком сложно описал, это тоже самое, что и написать
не в этом случае
|
| Автор: Alexeis 2.7.2010, 14:05 |
| azesmcar, я думал для таких случаев используется спецификатор static. Вот жеж чудики авторы С++! |
| Автор: bsa 2.7.2010, 16:24 |
| Alexeis, причем тут static? Он нужен для создания статического метода, который надо вызывать Class::method(). А тут речь идет о глобальной функции. |
| Автор: Alexeis 2.7.2010, 16:30 | ||
А как же тогда?
static для функции класса дает 1) namespace 2) доступ к private полям объекта. Что в этом случае нам дает friend 1) namespace 2) доступ к private полям объекта. |
| Автор: RobinHoodPHD 2.7.2010, 16:35 |
| Static дает доступ к private полям??? Oo Это что то новенькое Static объявляет метод статическим, т.е. не требующим создания экземпляра самого объекта. К доступу к полям не имеет никакого отношения. |
| Автор: Alexeis 2.7.2010, 16:40 | ||
Ну я не буквоед, как там по стандарту не в курсе, но везде где использую статик функции класса, везде они мне разрешают лазить внутрь. И MSVC и C++ Builder и eVC. Добавлено через 1 минуту и 46 секунд RobinHoodPHD, имеется ввиду, есть доступ в случае если указатель на экземпляр передается в качестве параметра функции. Если указатель не передается, То безусловно что не к чему обращаться. |
| Автор: azesmcar 2.7.2010, 16:48 | ||||
это не static, но и не совсем эквивалент глобальной функции.
рассмотрим такой код
|
| Автор: Alexeis 2.7.2010, 16:55 | ||
|
| Автор: mes 2.7.2010, 17:34 | ||
но при чем тут статик ? позволяет потому что является членом класса.. |
| Автор: Alexeis 2.7.2010, 17:55 | ||
mes, исходя из этого
я подумал будто такая функция попадает область видимости класса. Это же каким нужно было быть Возможности спецификатора static по отношению к функциям в данном случае поглощают возможности friend (т.е. позволяет сделать все тоже + спрятать от глобальной видимости) . |
| Автор: azesmcar 2.7.2010, 18:21 | ||||
да нет же.
|
| Автор: bsa 3.7.2010, 19:12 | ||
Все нормально, иначе бы пришлось делать извращения, чтобы реализовать операторы, первый аргумент которых не объект этого класса (например, методы вывода в поток). |