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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.07.2015, 14:02   #1
Bayern_M
Форумчанин
 
Регистрация: 18.03.2015
Сообщений: 114
По умолчанию Си++. Передача объекта класса по ссылке в качестве аргумента

Здравствуйте!
Изучаю и работаю на Си, но пришлось иметь дело с таким С++ зверем, как ссылки.

Прошу пояснить, как передать по ссылке объект класса в функцию. И как эту функцию описать в хидере. Какой символ использовать * или &
Заранее спасибо!

Код:
MyClass obj(a,b);  //Конструктор класса

func(&obj);
Хидер

Код:

int func(MyClass &object);
Модуль с func
Код:
int func(MyClass &object)
{
    func2(object);
}
Верно?
Bayern_M вне форума Ответить с цитированием
Старый 17.07.2015, 15:34   #2
Shad0wF1rst
Форумчанин
 
Регистрация: 11.01.2013
Сообщений: 149
По умолчанию

Многое не верно.
1) Передача по ссылке как аргумент функции вы написали правильно:
Код:
void func (Object &object);
2) А вот вызов не совсем правильно:
Код:
void func2 () {
    Object object;
    func (object);
}
А относительно что использовать * или &, то могу сказать следующее:
* - это указатель. Через него память под объект или данные выделяется динамически с помощью ключевого слова new. Указатель на объект может существовать без объекта, то есть указатель существует даже если вы не выделили память с помощью new. Но правда если вы попытаетесь обратиться по этому указателю ваша программа рухнет.
& - это ссылка. Вот она не может существовать пока объект не создан. Это безопаснее указателя. Но зато указатель позволяет делать некоторые финты.
Может это и чушь, но это моя чушь и я ее никому не отдам.
Shad0wF1rst вне форума Ответить с цитированием
Старый 17.07.2015, 16:10   #3
Bayern_M
Форумчанин
 
Регистрация: 18.03.2015
Сообщений: 114
По умолчанию

Цитата:
Сообщение от Shad0wF1rst Посмотреть сообщение
Многое не верно.
1) Передача по ссылке как аргумент функции вы написали правильно:
Код:
void func (Object &object);
2) А вот вызов не совсем правильно:
Код:
void func2 () {
    Object object;
    func (object);
}
А относительно что использовать * или &, то могу сказать следующее:
* - это указатель. Через него память под объект или данные выделяется динамически с помощью ключевого слова new. Указатель на объект может существовать без объекта, то есть указатель существует даже если вы не выделили память с помощью new. Но правда если вы попытаетесь обратиться по этому указателю ваша программа рухнет.
& - это ссылка. Вот она не может существовать пока объект не создан. Это безопаснее указателя. Но зато указатель позволяет делать некоторые финты.
Спасибо! Плюс в карму!
Bayern_M вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача функции в качестве аргумента через указатель Ka2R Помощь студентам 17 17.03.2015 16:20
Передача части массива в качестве аргумента функции Evgenuych96 Общие вопросы C/C++ 24 02.02.2013 17:49
Передача функции в качестве аргумента maks12 Помощь студентам 5 10.05.2012 08:13
Конструктор класса не хочет принимать в качестве параметра адрес объекта другого класса Jugger Помощь студентам 3 05.01.2012 04:10
Передача object в качестве аргумента moknomo Microsoft Office Excel 3 14.12.2010 09:35