template
inline void QList::clear() {
*this = QList(); // 創建臨時空列表,賦值給當前對象
}
QList() 調用默認構造函數創建一個空的臨時對象。*this = ... 調用賦值運算符,將臨時對象的內部數據(指针、大小等)移動/複製給當前對象。
void clear() {
QList tmp; // 空列表
swap(tmp); // 交換內部指針,O(1) 更高效
}
// 或 C++11 移動語義
*this = QList(); // 依賴 move assignment
此寫法依賴賦值運算符正確實現資源轉移。若類未正確實現 Rule of Three/Five,可能導致雙重釋放或洩漏。Qt 內部類均正確實現。