我的问题是:以下关于 STL 堆栈的代码是否正确?
在代码中,complex 是一个用户定义的类,定义了构造函数和析构函数。在地点 1 之后,复杂的构造函数和析构函数分别被调用了 5 次,在地点 2 之后,由于 pop() 的原因,复杂的析构函数再次被调用了 5 次。所以总的来说析构函数比构造函数更多。IMO 它不应该发生。我的代码正确吗?如果不正确如何纠正呢?假设我仍然使用堆栈而不是堆栈
#include <stack>
#include "complex.h"
using namespace std;
void test_stack(){
stack<complex> mystack2;
cout << "Pushing complex..." << endl;
for (int i=0; i<5; ++i) {
complex c(i,i);
mystack2.push(c);
}
//place 1
cout << "Popping out complex..." << endl;
while (!mystack2.empty())
{
cout << " " << mystack2.top();
mystack2.pop(); //void pop();
}
//place 2
cout << endl;
}