为什么这个代码在运行时会使程序崩溃
ostream& operator<<(ostream& cout, Array<int> a) {
return cout;
}
这不是
ostream& operator<<(ostream& cout, Array<int>& a) {
return cout;
}
答案 0 :(得分:1)
Array<int>
的复制构造函数有什么作用?看看阅读What is The Rule of Three?的第一个答案是否解决了您的问题(即,您的类在内部处理指向资源的指针,但无法在其复制构造函数中执行深层复制,导致两个实例删除相同的资源) 。
答案 1 :(得分:1)
压倒性的可能性是你的Array<int>
的复制构造函数或析构函数被搞砸了。除此之外,你有一些严重的命名空间问题 - 你已经为ostream使用了命名空间std,但后来调用了你的参数cout,这与std :: cout冲突。我很惊讶这段代码编译 - 你应该总是使用std :: for Standard名称,因为否则就是模棱两可。