在 C++ 中,bool
函數的參數類型沒有特殊限制。實際上,bool
類型只能表示兩個值:true
或 false
。但是,你可以將任何其他類型的值傳遞給一個接受 bool
類型參數的函數,編譯器會自動進行類型轉換。
例如,當你將一個整數傳遞給一個接受 bool
類型參數的函數時,非零值會被轉換為 true
,而零值會被轉換為 false
。同樣,對于指針類型,非空指針會被轉換為 true
,而空指針會被轉換為 false
。
這里有一個簡單的例子:
#include<iostream>
void print_bool(bool value) {
std::cout << (value ? "true" : "false")<< std::endl;
}
int main() {
int a = 42;
print_bool(a); // 輸出 "true",因為 a 非零
int b = 0;
print_bool(b); // 輸出 "false",因為 b 為零
int* ptr1 = &a;
print_bool(ptr1); // 輸出 "true",因為 ptr1 非空
int* ptr2 = nullptr;
print_bool(ptr2); // 輸出 "false",因為 ptr2 為空
return 0;
}
然而,在實際編程中,最好顯式地將其他類型的值轉換為 bool
類型,以提高代碼的可讀性和可維護性。例如:
print_bool(static_cast<bool>(a));