我有,我已經明確地超負荷運營商布爾像這樣一類: -object.operator bool()和(bool)對象有什麼區別?
class Foo {
explicit operator bool() {
// return_something_here
}
};
然而,當我運行在gdb以下兩個我得到: -
gdb) p fooobj.operator bool()
$7 = true
gdb) p (bool)(fooobj)
$8 = false
有什麼區別兩次調用之間以及爲什麼他們返回不同的東西?
編輯: - 我正在使用clang編譯器。
注意: - 第二個值(false)是我想要使用第一個語法返回的正確值。我正在使用一個codegen,所以我沒有完全控制C++生成的情況,以防萬一有人好奇我爲什麼不使用第二種語法。
即使在這種情況下,兩者之間的差異仍然是一個沒有答案的問題。
FWIW,在C++中'fooobj.operator bool()'和'(bool)(fooobj)'沒有區別。我不知道他們在gdb中有什麼不同。 –
@RSahu這正是我的理解。但是,它絕對不會以這種方式工作。 – owagh
[沒有區別](https://ideone.com/V88alD)。你的問題似乎更多的是關於GDB的操作而不是關於C++的操作。 –