21xrx.com
2024-11-05 18:57:09 Tuesday
登录
文章检索 我的文章 写文章
C++中new运算符的用法及语法解析
2023-07-04 12:40:26 深夜i     --     --
C++ new运算符 用法 语法解析

C++中的new运算符是程序员用于动态创建对象的一种方式。它可以在运行时分配内存空间,并在此基础上构造一个对象。相比于静态创建对象,动态创建对象的一个主要优点是可以根据具体的需求动态地调整所需的内存空间大小,解决了静态创建对象的由于内存不够或浪费内存等问题。

new运算符最常见的用法是创建单个对象,语法为:new 类名 或 new 类名(参数列表)。我们可以通过下面的例子来学习其基本语法:


#include <iostream>

using namespace std;

class Student{

public:

  Student(int _age, const char* _name){

    age = _age;

    name = new char[strlen(_name) + 1];

    strcpy(name, _name);

  }

  ~Student(){

    delete[] name;

  }

  int age;

  char* name;

};

int main(){

  Student* ptr = new Student(20, "Tom");

  cout << "name: " << ptr->name << endl;

  cout << "age: " << ptr->age << endl;

  delete ptr;

  return 0;

}

上面代码中,我们使用new运算符创建了类型为Student的对象。同时,我们传入了构造函数所需的参数,这里是20和"Tom"。通过运行时分配内存空间并构造对象,我们最终得到了一个指针ptr,它指向了刚刚创建的对象。由于name是一个指向char类型的指针,我们在构造函数中需要分配一定大小的内存空间来存储字符串,最后需要在析构函数中释放内存空间。

除了创建单个对象,new运算符还可以创建数组对象,语法为:new 类型名称[数组大小],其中数组大小必须是常量表达式。下面我们看一个例子:


#include <iostream>

using namespace std;

class Point{

public:

  int x, y;

};

int main(){

  int size;

  cout << "请输入数组大小: ";

  cin >> size;

  Point* points = new Point[size];

  for(int i = 0; i < size; i++){

    points[i].x = i;

    points[i].y = 2 * i;

  }

  for(int i = 0; i < size; i++){

    cout << "x: " << points[i].x << " y: " << points[i].y << endl;

  }

  delete[] points;

  return 0;

}

上面的例子中,我们创建了一个Point类型的数组,数组的大小由用户在运行时输入。我们使用for循环给数组元素赋值,然后再循环输出每个元素的值。注意,在释放数组对象的内存空间时,需要使用delete[]运算符,而不是简单的delete运算符。

总之,C++中的new运算符是用于动态创建对象的重要工具。通过掌握它的语法和用法,我们可以更好地利用内存资源,让程序实现更加灵活和高效。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复