簡體   English   中英

將指針作為參數傳遞給引用時的 C++ 指針轉換

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM