Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Avgust
3 / 3 / 3
Регистрация: 03.11.2014
Сообщений: 80
1

Передача параметров в дружественную функцию класса

20.02.2016, 07:38. Просмотров 626. Ответов 1
Метки нет (Все метки)

Всем доброго времени суток. Читал про дружественные функции, в учебнике по которому учусь написано, что в дружественную функцию класса нужно обязательно передавать ссылку на объект класса, иначе не будет работать. Написал программку, кидаю код.
Complex.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Complex
{
private:
    double re, im;
public:
    Complex();
    Complex(double r);
    Complex(double r, double i);
    Complex(Complex &c);
    ~Complex();
    Complex & operator = (Complex &c);
    Complex Complex::operator + (Complex &c);
    Complex Complex::operator - (Complex &c);
    Complex Complex::operator * (Complex &c);
    Complex Complex::operator / (Complex &c);
    void set(double r, double i);
    bool operator != (Complex &c);
    bool operator == (Complex &c);
 
    friend ostream &operator<<(ostream &, Complex&);
    friend istream &operator>>(istream &, Complex);
};
Complex.cpp (покажу только интересующие меня функции).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
ostream &operator<<(ostream &out, Complex& c) // ссылка на объект класса?
{
    out << "(" << c.re << ") + I(" << c.im << ")";
 
    return out;
}
 
istream &operator>>(istream &in, Complex c)
{
    in >> c.re >> c.im;
 
    return in;
}
Как видите отличаются параметры в << и в >>. Но работает всё отлично. В первом случае передаю Complex& c, во втором просто Complex c. Т.е. разницы нету????
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2016, 07:38
Ответы с готовыми решениями:

Передача строки в дружественную функцию
Доброго времени суток! Помогите пожалуйста исправить программу( было много попыток, но все тщетно),...

Как определить дружественную функцию шаблонного класса?
Подскажите, пожалуйста, как определить дружественную функцию какого-то определенного шаблона? ...

Как переопределить дружественную функцию ввода для класса наследника
Есть класс предок, который имеет такую вот дружественную функцию ввода: friend ifstream &amp;...

Передача параметров из дочернего класса в родительский
Добрый день. Хочу изменить значение в родительском классе, вызвав метод в дочернем, но она не...

Передача параметров в функцию
Помогите пожалуйста сделать лабораторную по ЯП. // Лабораторная работа 2 // тема &quot;Передача...

1
Ilot
Эксперт С++
1854 / 1207 / 347
Регистрация: 16.05.2013
Сообщений: 3,192
Записей в блоге: 6
Завершенные тесты: 1
20.02.2016, 07:45 2
Цитата Сообщение от Avgust Посмотреть сообщение
Т.е. разницы нету????
Разница есть. При передаче ссылки вы передаете сам объект. При передаче по значению в функцию передается временный объект. Т.е. реально заноситься данные в нелокальный объект класса Complex не будут.
1
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.02.2016, 07:45

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

Передача параметров в функцию
Толи я чего-то туплю, толи всё же в мейн ошибка. Итак: есть функция, которая должна сообщать о...

Передача параметров в функцию
void f(int a) ; // передача по значению void f(int *a);//передача по ссылке void f(int &amp;a) ;...


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

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

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