我遇到过以下代码,好吧,不完全但很接近。 兴趣点是(严重缩写的代码)中的第二行。 为什么必须初始化someReference'omeseReference'?其他则可以使用。运算符而不是 - > ? ptr这个一样好,不是吗? (它在线程方法中,如果这有任何区别)
// this line, why? SomeClass & someReference(*ptrThis); unsigned SomeClass::someThread(void *ptr) { SomeClass *ptrThis = reinterpret_cast<SomeClass*>(ptr); SomeClass & someReference(*ptrThis); // some other code }
答案 0 :(得分:3)
引用始终需要在声明时初始化(除非它们是外部的)。它们在一生中始终与一个物体联系在一起。这确保了引用(与普通指针不同)(理论上)永远不会是NULL
,因为它必须引用某人。分配给引用分配给引用者。
答案 1 :(得分:2)
是; ptr这也一样好。我想,风格很重要。考虑到你发布的内容,它确实看起来有点多余,但我会给原作者一个怀疑,即在完整的例子中它是有意义的。
答案 2 :(得分:0)
它不必做任何与线程有关的事情,因此无法解释你给出的代码片段