2012-07-19 53 views
1

在書C++ Templates - The Complete Guide的示例pointers/countingptr.hpp中,派生依賴項class CountingPtr的成員使用this指針引用。爲什麼在這個例子中需要this?我知道this指針是必需的,以命名從屬基類模板的成員。當然,this指針在依賴派生類模板中也不是必需的嗎?在依賴派生類模板中使用該指針

+0

你有沒有試過把它丟掉? – 2012-07-19 12:39:54

+1

不。我正在研究這個文本,並且我認爲它出於我還沒有理解的原因。 – Olumide 2012-07-19 12:41:41

回答

2

我相信這只是一個製作此代碼的人的風格。有些人更喜歡把this->放在任何與該班級內的班級有關的人面前。確實可以有時,如果你正在做的有趣的事情就像是有用的:

void foo(int a) 
{ 
this->a = a; 
} 

,或者如果你只是覺得這增加了可讀性。 但是,如果使用太多,這將是一個爛攤子:

this->a = this->b * this->c - this->foo(this->d, this->bar()); 
2

不需要。有些人到處都使用this

+0

奇怪。這是書中第一次作者決定「明確」這個詞。潘打算。 – Olumide 2012-07-19 12:45:02

+0

如果你總是使用'this',那麼你不會忘記它的依賴基礎成員。 – curiousguy 2012-07-22 01:22:22

0

依賴派生類

在什麼不是必需的?

沒有「依賴派生類」。派生類是派生類。

派生類模板

它是一個類模板,但它解析爲一個類

認爲它是這樣的:

它不是一個類模板,只是一個類(A類)。類模板專業化,但仍然是一個類,就像一個普通的類。

或者這樣說:

派生類模板實例具有「神奇的懶惰型」的說法。這個懶惰的類型參數會暫停依賴它的任何表達式的編譯。