C++ 类(new和delete运算符)

文章概述

  1. new和delete运算符

new和delete运算符

a. new/delete 是C++的运算符;类似于malloc/free,程序运行(动态)得开辟内存空间(堆);
b. new 可以为内置类型的变量开辟空间,数组变量,类的对象开辟空间。这是在堆上开辟内存,返回一个指向该内存空间的地址。

  • 内置类型开辟空间
//开辟内存并且初始化
int *a = new int(10);
//释放开辟的内存
delete a;
  • 数组变量开辟空间
//开辟内存空间
int * arr = new int[5];
//释放开辟的内存
delete[]arr;
  • 类对象开辟内存
class Test
{

}
//开辟内存空间
Test *t = new Test();
//释放开辟的内存
delete t;

我们分析下面的代码(看看new/delete除了开辟空间,还会干什么?):

//这个例子自己可以试试
class A
{
public:
    A()  { cout << "创建对象" << endl; }
    ~A() { cout << "析构对象" << endl; }
};

int main()
{
    A* a = new A();
    delete a;
    return 0;
}

我们得出: new/delete会调用类的构造函数和析构函数。


注意: a. new/delete,malloc/free最好匹配使用;
b. new和malloc最大区别: new会调用类的构造函数,malloc不会;
c. delete和free同理;new/delete是运算符,malloc/free函数。所以new/delete效率应该会高点。

猜你喜欢

转载自blog.csdn.net/wue1206/article/details/81144450
今日推荐