这是为对象创建大小为 (1,len) 的 vector 的代码:
#include<iostream.h>
class vector
{
int *vect;
int len;
public:
vector(){ vect=NULL; len=0; }
void get_data();
void display();
};
void vector::get_data()
{
cout<<"Enter number of elements: ";
cin>>len;
int *f=new int(len);
vect=f;
cout<<"Enter "<<len<<" values: ";
for(int i=0;i<len;i++) cin>>*(vect+i);
}
void vector::display()
{
for(int i=0;i<len;i++) cout<<*(vect+i)<<" ";
cout<<endl;
}
void main()
{
vector v1,v2;
v1.get_data();
v1.display();
v2.get_data();
v2.display();
v1.display();
}
输出:
Enter number of elements: 5
Enter 5 values: 1 2 3 4 5
1 2 3 4 5
Enter number of elements: 5
Enter 5 values: 6 7 8 9 9
6 7 8 9 9
9 2 3 4 5
为什么 vector 对象 v1 的第一个值在创建对象 v2 时改变了?
当我替换行时:
int *f=new int(len);
在 get_data() 到 int *f=new int[len];
我得到了预期的结果:
Enter number of elements: 5
Enter 5 values: 1 2 3 4 5
1 2 3 4 5
Enter number of elements: 5
Enter 5 values: 6 7 8 9 9
6 7 8 9 9
1 2 3 4 5
最佳答案
new int(len)
创建一个整数,并用值 len
初始化它。
new int[len]
创建一个未初始化的 len
整数数组。
关于c++ - new(size) 和 new[size] 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21959474/