![](/img/trans.png)
[英]C++ casting a pointer to a reference to pointer of base class in function parameter
[英]C++ pointer casting when passing pointer as parameter to reference
我很好奇,是:
bool State::operator<(const State* S)
{
return this->operator<(*dynamic_cast<const State *>(S));
}
完全一樣:
bool State::operator<(const State* S)
{
return this->operator<(*(S));
}
作為參考,被調用的this->operator<
是:
bool State::operator<(const State& S)
{
return this->reward < S.reward ? true : false;
}
哪一個更“正確”並且類型安全/安全使用,或者有什么實際區別?
不,第一個將指針強制轉換為自身,這實際上並沒有做任何事情,然后調用const State*
重載,這會導致無限循環。 在需要在運行時向下轉換之前,您不需要dynamic_cast
- 這里沒有向下轉換,所以
return this->operator<(*S);
是唯一要做的事情。
假設你有一個錯字,你的意思是比較這個:
*dynamic_cast<const State *>(s)
...對此:
*s
...其中 s 具有編譯時類型const State *
,完全沒有區別。
可以想象,如果您的編譯器沒有注意到它們是編譯時等效的,前者可能會稍微慢一些。
我會避免使用前者,因為任何閱讀它的人都會想知道你在想什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.