函數參數類型為 const char*,傳入 QByteArray 編譯通過;參數為 QHostAddress,傳入枚舉值編譯通過。
Qt 類廣泛提供隱式構造函數(非 explicit),允許自動類型轉換:
QByteArray::operator const char*() const {
return data(); // 內部數據以 '\0' 結尾
}
調用 data() 或 constData() 返回內部緩衝區指針,生命周期綁定 QByteArray 對象。
// QHostAddress 有構造函數
QHostAddress::QHostAddress(SpecialAddress address) { ... }
// SpecialAddress 為枚舉類型,包含 Broadcast, LocalHost 等
QString str = "hello";
QByteArray ba = str.toLocal8Bit(); // "hello\0"
const char* cstr = ba; // 隱式轉換
// 等價於
const char* cstr2 = ba.constData();
QHostAddress addr = QHostAddress::Broadcast; // 枚舉隱式轉換
// 等價於
QHostAddress addr2(QHostAddress::Broadcast);
explicit 防止意外轉換,Qt 為兼容性保留隱式static_cast 強制轉換確認類型