C ++运算符重载,崩溃

时间:2010-12-12 13:53:00

标签: c++

为什么这个代码在运行时会使程序崩溃

ostream& operator<<(ostream& cout, Array<int> a) {

    return cout;
}

这不是

ostream& operator<<(ostream& cout, Array<int>& a) {

    return cout;
}

2 个答案:

答案 0 :(得分:1)

Array<int>的复制构造函数有什么作用?看看阅读What is The Rule of Three?的第一个答案是否解决了您的问题(即,您的类在内部处理指向资源的指针,但无法在其复制构造函数中执行深层复制,导致两个实例删除相同的资源) 。

答案 1 :(得分:1)

压倒性的可能性是你的Array<int>的复制构造函数或析构函数被搞砸了。除此之外,你有一些严重的命名空间问题 - 你已经为ostream使用了命名空间std,但后来调用了你的参数cout,这与std :: cout冲突。我很惊讶这段代码编译 - 你应该总是使用std :: for Standard名称,因为否则就是模棱两可。