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

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

20.02.2016, 07:38. Просмотров 287. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2016, 07:38
Ответы с готовыми решениями:

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

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

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

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

передача параметров в функцию
Здарвствуйте! Неделю изучаю С++, и в книге по которой изучаю сказано: ...

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

Передача параметров в функцию
Люди помогите, пожалуйста. Есть такая простая задачка: В одномерном массиве,...

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

Передача параметров в функцию
Как понять , что передаётся в функцию при такой записи : void Fun(str* &amp;r) ...


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

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

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