【发布时间】:2014-11-30 03:58:03
【问题描述】:
考虑以下代码:
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; -
非常感谢!如此愚蠢的错误……我对 C++ 有点陌生,完全无视这一点……
标签: c++ segmentation-fault operator-keyword