对象的动态建立和释放

c语言与C++的区别

C语言(使用库函数):
malloc()
free()

C++:
new
delete

区别
1)malloc free 为c语言库函数,new delete 是c++的运算符;
2)在对象的建立与释放上 c++中执行delete运算符时,在释放内存空间之前,自动调用析构函数,完成有关善后清理工作,而c语言中的free 不会
3)c++中推荐使用 new 与 delete ,运算符效率高
相同
对于普通的数据变量 两者差不多

语法规则

    new int;  开辟一个存放整数的存储空间
    new int(100);开辟一个存放整数的存储空间 把100存进去
    数组不可指定初始值
    new char[20]; 开辟一个长度为20的字符型数组的存储空间
    new int[2][3];开辟一个长度为2*3的二维数组的存储空间
    int *p = new int(100);开辟一个存放整数的存储空间 把100存进去,  再在栈中定义一个指针类型p指向它(把开辟的内存地址给p)

    delete p;
    delete[] p;  释放数组所占空间

代码演示

class Tree
{
private:
    int m_ages;
public:
    Tree(int ages)
    {
        m_ages = ages;
    }
    void grow(int years)
    {
        m_ages += years;
    }
    int print_Ages()
    {
        return m_ages;
    }
    ~Tree()
    {

    }
};
int main()
{
    Tree *p = new Tree(20);
    p->grow(30);
    cout << p->print_Ages() << endl;
    delete p;

    Tree *q;
    q = new Tree(40);
    cout << q->print_Ages() << endl;
    delete q;

    system("pause");
    return 0;
}

异常处理

C++ new内存不足或者其他原因导致内存开辟失败的时候 一般会返回0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值