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效率应该会高点。

  • 12
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值