c++ - new(size) 和 new[size] 的区别

标签 c++ new-operator

这是为对象创建大小为 (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/

相关文章:

c++ - 析构函数如何在派生类中工作。 C++

c++ - 如何访问( boost 元)状态机中的所有状态?

c++ - VS2010 中不同大小的 lambda 表达式?

c++ - 被释放的指针未分配给指针赋值

c++ - 是否可以在不崩溃的情况下以编程方式创建迷你转储文件?

php - 如何在新创建的对象上链接方法?

C++ : operator new and default constructor

c++ - "new int(100)"有什么作用?

c++ - 使用 new 分配一个长度为零的结构

python - 从 python 调用 c++ 函数