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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 09.05.2009, 18:17   #1
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
По умолчанию Обяснить немножко

Здравсвуйте программисты! Можете немного дать коментарий по вот этой строке Function(&obj); ?
Мне не ясно, почему именно стоит &obj тоесть мы вызываем функцию, а в скобочках пишем именно &obj. Зараннее благодарен за ответ. Просто вроде это всё понял, но этот кусок не могу понять. Почему не указатель в функции, а объект,который создали?

Код:
#include <iostream>

using namespace std;

class AAA
{
    private:
        int Z;
    public:
        void GetZ()
        {
            cout << "Z = " << Z << endl;
        }
 
    friend void Function(AAA *p);
};
 
void Function(AAA *p)
{
    p->Z = 100;
}
 
int main()
{
    AAA obj;
 
    Function(&obj);  

       obj.GetZ();

    system("pause");
    return 0;
}
prikolist вне форума
Старый 09.05.2009, 18:26   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Мне не ясно, почему именно стоит &obj тоесть мы вызываем функцию, а в скобочках пишем именно &obj.
Потому что объект передается функции по ссылке. Это позволяет функции менять объект.
Если не указывать амперсанд, то функция будет работать с копией объекта.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 09.05.2009, 18:46   #3
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
По умолчанию

&obj - этот объект создаётся для цели, чтоб получить адресс указателя и передать его obj?
prikolist вне форума
Старый 09.05.2009, 18:54   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

obj - объект.
&obj - ссылка на объект.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 09.05.2009, 19:00   #5
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
По умолчанию

Ну хорошо, ссылка на объект Function(&obj);
Зачем создавать ссылку на объект,просто блин не могу въехать. Почему не так описывать в функции мэин, Function(ААА*р);
а так Function(&obj);

Последний раз редактировалось prikolist; 09.05.2009 в 19:04.
prikolist вне форума
Старый 09.05.2009, 19:09   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

prikolist, вы неясно излагаетесь.
Что значит
Цитата:
Почему не так описывать в функции мэин, Function(ААА*р);
а так Function(&obj);
?
При вызове функции тип параметров не указывается.
Функция принимает объект по указателю. Поэтому нужно передать ей его по ссылке.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 09.05.2009, 19:53   #7
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
По умолчанию

Чтоб передать указателю р, адресс объекта obj с этой целью пишется вот эта строка Function(&obj);
prikolist вне форума
Старый 09.05.2009, 20:09   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Чтоб передать указателю р, адресс объекта obj с этой целью пишется вот эта строка Function(&obj);
Ну как-то так, если вам так понятней.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 09.05.2009, 21:44   #9
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

2Sazary его вообще тяжело понять) я ему уже сказал, что не с того начинает. не разобравшись полностью с массивами/условными операторами/циклами и тп лезет в ооп, да еще и в указатели
vvviperrr вне форума
Старый 09.05.2009, 21:49   #10
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

vvviperrr Уж не знаю по какой книге ТС учит язык, но она явно неправильная (или просто prikolist читает ее непоследовательно). )

Одно ясно точно: с таким подходом учить язык довольно трудно )
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль. РОЗВ’ЯЗУВАННЯ СИСТЕМИ НЕЛІНІЙНИХ РІВНЯНЬ МЕТОДОМ НЬТОНА и ещё немножко) Vofka Фриланс 7 25.01.2008 15:14