2010-01-19 13 views
1

我碰到以下代碼,好吧,不完全,但密切。 興趣點是(嚴重縮寫代碼)中的第二行。 爲什麼要初始化someReference'someReference'?其他則可以使用。運算符而不是 - >? ptr這是一樣好,不是嗎? (它的線程方法中,如果有什麼差別)(除非它們是外部的)他們聲明時裏面的c + +線程,初始化參考

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

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

// some other code 
} 

回答

3

參考總是需要被初始化。它們在整個生命週期內都只限於一個物體。這確保了與普通指針不同的引用可以(理論上)永遠不會是NULL,因爲它必須引用某人。分配給引用分配給引用者。

+1

+1,同時也可以防止代碼試圖釋放與對象相關的內存什麼的代碼片段了。 – 2010-01-19 22:42:26

2

是; ptrThis也一樣好。我想,風格問題。這看起來有點多餘,因爲你已經發布了一些內容,但是我會給原作者一個懷疑的好處,那就是在整個示例中它是有意義的。

0

它沒有做相關的任何線程,因此不能解釋從你所賜給