Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2010, 23:58   #1
Superlotles
Пользователь
 
Аватар для Superlotles
 
Регистрация: 18.08.2009
Сообщений: 86
По умолчанию Функции операторов для класса

Для чего здесь friend
Код:
#include "stdafx.h"
#include <conio.h>
using namespace std;
class Point{
public:
        double x,y;
        friend Point operator*(int n, Point pt){ // Зачем здесь нужен friend
                Point new_pt;
                new_pt.x=pt.x*n;
                new_pt.y=pt.y*n;
                return new_pt;
        }
};
 
        int main(){
                Point point1,point2;
                point2.x=2.0;
                point2.y=3.0;
                point1=5*point2;
        }
Skype: Lotles-XXXX
Superlotles вне форума Ответить с цитированием
Старый 07.06.2010, 00:02   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вообще дружественные функции нужны для доступа к закрытым членам класса(приватные вроде только)

тут, не вижу смысла в применении дружественных функций.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.06.2010, 00:06   #3
Superlotles
Пользователь
 
Аватар для Superlotles
 
Регистрация: 18.08.2009
Сообщений: 86
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
вообще дружественные функции нужны для доступа к закрытым членам класса(приватные вроде только)

тут, не вижу смысла в применении дружественных функций.
Если не делать дружественную функцию не комп-ся
Не пойму, почему там надо было ставить а тут нет
Код:
#include "stdafx.h"
#include <conio.h>
using namespace std;
class Point{
	public:
	double x,y;
	Point operator+(Point pt){
		Point new_pt;
		new_pt.x=x+pt.x;
		new_pt.y=y+pt.y;
		return new_pt;
	}
};
int main(){
	Point point1, point2,point3;
	point2.x=2.0;
	point3.x=3.0;
	point2.y=4.0;
	point3.y=5.0;
	point1=point2+point3;
}
Skype: Lotles-XXXX

Последний раз редактировалось Superlotles; 07.06.2010 в 00:37.
Superlotles вне форума Ответить с цитированием
Старый 07.06.2010, 00:06   #4
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

возможно функция не является методом, а определена ранее, например в библиотеке stdafx.h, тогда эта функция может действовать наравне с методами класса, а именно иметь доступ к скрытым членам класса (private)
capta1n вне форума Ответить с цитированием
Старый 07.06.2010, 00:33   #5
Superlotles
Пользователь
 
Аватар для Superlotles
 
Регистрация: 18.08.2009
Сообщений: 86
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
вообще дружественные функции нужны для доступа к закрытым членам класса(приватные вроде только)

тут, не вижу смысла в применении дружественных функций.
Вот доступ к закрытым членам без ошибки и без friend
Я не пойму как работает friend напишите на примере
Код:
#include "stdafx.h"
#include <conio.h>
using namespace std;
class Point{
private:
	double x,y;
	Point operator*(Point pt){
		Point new_pt;
		new_pt.x=pt.x;
		new_pt.y=pt.y;
		return new_pt;
	}
};
	
	int main(){
	}
Skype: Lotles-XXXX
Superlotles вне форума Ответить с цитированием
Старый 07.06.2010, 00:49   #6
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

вот тут рассказывается про friend и есть примеры
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 07.06.2010, 01:50   #7
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Superlotles почитай книгу Г.Шилдта "Самоучитель С++". Там как раз рассказывается, что для передачи двух параметров при перегрузке оператора нужно использовать именно дружественные функции.

Последний раз редактировалось profi; 07.06.2010 в 01:54.
profi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ Перегрузка операторов. Создать оператор (+) для сложения строк Sanu0074 Помощь студентам 4 05.07.2010 21:29
Функции операторов Karasu Общие вопросы C/C++ 7 13.07.2009 18:04
Перегрузка операторов, Организация перегрузки операторов chagin_yav Помощь студентам 2 12.05.2008 09:15
Статичиские функции класса Дмитрий_Ч Общие вопросы C/C++ 12 04.10.2007 16:19