我有一些Java经验,但是在C++方面还是初学者。
以下是我的代码,它的输出结果如下:
0 1 2 3 4 5 6 7 8 9
destructor ---s1
8791616 8785704 2
destructor ---s1
我期望得到以下输出:
0 1 2 3 4 5 6 7 8 9
destructor ---abc
0 1 2
destructor ---s1
我不明白为什么析构函数会释放第一个对象的资源。 我该如何打印出我期望的输出?
#include <iostream>
using namespace std;
class Sequence{
public:
Sequence(int count=10,string name = "abc");
void show();
~Sequence();
int* _content;
int _count;
string _name;
};
Sequence::Sequence(int count,string name){
_count = count;
_content=new int[count];
_name = name;
for(int i=0;i<count;i++){
_content[i]=i;
}
}
Sequence::~Sequence(){
cout << "destructor ---"<<_name<<endl;
delete [] _content;
}
void Sequence::show(){
for(int i=0;i<_count;i++)
cout<<_content[i]<<" ";
cout<<endl;
}
int main(){
Sequence s1 = Sequence();
s1.show();
s1 = Sequence(3,"s1");
s1.show();
}
std::vector
。声音、正确、高效:你想要的任何东西 :) - Matthieu M.