1
考慮下面的代碼:分割故障和操作符重載
bool Queue::operator+=(int value) {
std::cout << "Appending the value " << value;
std::cout << " by using operator overloading." << std::endl;
// in the actual code: q->append(value);
return false;
}
int main() {
Queue *q = new Queue();
for (unsigned i = 0; i < 1000; i++) {
q+=6;
}
q->append(6);
delete q;
return EXIT_SUCCESS;
}
我在實際執行方式更多的代碼,但這裏的主要問題是:
我嘗試使用運算符重載作爲追加函數,它將一個元素添加到Queue
對象。 主要功能與功能Queue::append
一起使用。無論如何,我編譯這個代碼和運算符重載編譯沒有錯誤。但該程序無論如何崩潰。
調試時似乎每當我使用重載使用Queue
對象q
(例如剛剛析構函數或類似Queue::append
另一個函數)後,我收到了分段錯誤。
我搞不清楚我做錯了什麼。
很明顯,在這個例子中,重載包含一個輸出並返回一個bool
。
我想你的意思是'(* q)+ = 6;' – 2014-10-05 20:35:36
非常感謝!這樣一個愚蠢的錯誤......我對C++很陌生,完全忽視了...... – Acctubi 2014-10-05 20:44:33