внутри потока C ++, инициализация ссылки - PullRequest
1 голос
/ 20 января 2010

Я встречал следующий код, хорошо, не совсем, но близко.Интересной точкой является вторая строка в (сильно сокращенном коде).Почему нужно инициализировать someReference someReference?Другие тогда смогут использовать.оператор вместо ->?Это так же хорошо, нет?(это внутри метода потока, если это что-то меняет)

// this line, why?
SomeClass & someReference(*ptrThis);

unsigned SomeClass::someThread(void *ptr)
{
 SomeClass *ptrThis = reinterpret_cast<SomeClass*>(ptr); 
 SomeClass & someReference(*ptrThis);

 // some other code
}

Ответы [ 3 ]

3 голосов
/ 20 января 2010

Ссылки всегда необходимо инициализировать, когда они объявлены (если они не являются внешними). Они остаются связанными с одним объектом в течение всей своей жизни. Это гарантирует, что ссылка, в отличие от обычного указателя, никогда не может (теоретически) быть NULL, потому что она должна ссылаться на кого-то. Присвоение ссылке назначает ссылку.

2 голосов
/ 20 января 2010

Да; Это так же хорошо. Дело в стиле, я полагаю. Это кажется немного излишним, учитывая то, что вы опубликовали, но я дам первоначальному автору пользу от сомнения, что это имело смысл в контексте полного примера.

0 голосов
/ 20 января 2010

Это не должно иметь ничего общего с потоками и поэтому не может многое интерпретировать из того фрагмента кода, который вы дали

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...