類在STL,如的unique_ptr有時會展示的例子,如:默認行爲投
// unique_ptr constructor example
#include <iostream>
#include <memory>
int main() {
std::default_delete<int> d;
std::unique_ptr<int> u1;
std::unique_ptr<int> u2 (nullptr);
std::unique_ptr<int> u3 (new int);
std::unique_ptr<int> u4 (new int, d);
std::unique_ptr<int> u5 (new int, std::default_delete<int>());
std::unique_ptr<int> u6 (std::move(u5));
std::unique_ptr<void> u7 (std::move(u6));
std::unique_ptr<int> u8 (std::auto_ptr<int>(new int));
std::cout << "u1: " << (u1?"not null":"null") << '\n';
std::cout << "u2: " << (u2?"not null":"null") << '\n';
std::cout << "u3: " << (u3?"not null":"null") << '\n';
std::cout << "u4: " << (u4?"not null":"null") << '\n';
std::cout << "u5: " << (u5?"not null":"null") << '\n';
std::cout << "u6: " << (u6?"not null":"null") << '\n';
std::cout << "u7: " << (u7?"not null":"null") << '\n';
std::cout << "u8: " << (u8?"not null":"null") << '\n';
*emphasized text* return 0;
}
線:
std::cout << "u1: " << (u1?"not null":"null") << '\n';
示出的unique_ptr U1直接投射到如果它正在跟蹤空指針,則爲false。
我已經看到在其他自定義類中使用此行爲。這是如何管理的,以及運營商決定是否直接轉換爲bool,例如返回true或false?
該代碼中存在** no cast **。有一個**隱式轉換**。強制轉換是您在代碼中編寫的指示編譯器執行轉換的內容。 –