xztau
@xztau
Я

Как получить ссылку на объект?

Здравствуйте!
Не могу до конца понять работу с передачей объектов по ссылкам
Class A
{
	B *_b;
	C _c2;
	C *_c;
	
	A(){
		B _b = new B();
		C _c = new C();
		
		_b->setC(*_c);
		_b->setC(_c2);
	}
}

Class B
{
	C *_c;
	
	void setC(const C& c){
		_c = c;
	}
}

Class C
{
	
}

На сколько я понял, в функцию с параметрами (const &C c) если объект создавался оператором new, то передаётся значение указателя, а если статически то ссылка.
Внутри функции это просто число-адрес памяти, где расположен объект?
Как мне внутри класса _b теперь присвоить полученный адрес указателю С* с?
ошибка: cannot convert 'const C' to 'C*' in assignment
  • Вопрос задан
  • 138 просмотров
Пригласить эксперта
Ответы на вопрос 1
@res2001
Developer, ex-admin
Правильно:
const C& c

объект создавался оператором new, то передаётся значение указателя, а если статически то ссылка

Нет - в любом случае передается ссылка. Если у вас есть указатель, а передать надо ссылку, то вы должны разыменовать указатель.
Внутри функции это просто число-адрес памяти, где расположен объект?

Лучше не заморачиваться этим вопросом. На уровне ассемблера нет никаких ссылок, поэтому по факту ссылки - это те же завуалированные указатели, у которых на уровне компилятора ограничен функционал для более безопасного использования.
Указатель - это целое число. Размер указателя не зависит от типа, на который он указывает, зависит только от платформы (в х64 указатели 64 битные, а в х32 - 32 битные).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы