Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Avgust
3 / 3 / 1
Регистрация: 03.11.2014
Сообщений: 80
#1

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

20.02.2016, 07:38. Просмотров 230. Ответов 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
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2016, 07:38
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Передача параметров в дружественную функцию класса (C++):

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

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

Как переопределить дружественную функцию ввода для класса наследника - C++
Есть класс предок, который имеет такую вот дружественную функцию ввода: friend ifstream &amp; operator &gt;&gt;(ifstream &amp; inf, Tovar &amp; obj) ...

Передача параметров в функцию - C++
Добрый вечер Не получается передать в функцию массив выдает ошибку #include &lt;cstdio&gt; struct morse_code { const char*...

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

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

1
Ilot
Эксперт С++
1826 / 1184 / 232
Регистрация: 16.05.2013
Сообщений: 3,119
Записей в блоге: 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
Привет! Вот еще темы с ответами:

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

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

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

передача параметров в функцию - C++
Здарвствуйте! Неделю изучаю С++, и в книге по которой изучаю сказано: &quot;Передавать параметры по значению только при необходимости и...


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

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

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