c++创建对象

1 栈内存对象

这种对象存储在栈内存,其生命周期是所在的花括号,例如在主函数中创建的对象,其生命周期就是主函数的花括号,即主函数执行完,此对象会自动被销毁。

栈内存对象的优势在于,无需手动回收销毁,当所在的代码块执行结束后,会自动被销毁,适合临时使用的对象。

// 手机类代码略
int main()
{
    // 创建一个栈内存对象
    MobilePhone mp1;
    // 调用属性
    mp1.brand = "小米";
    mp1.model = "13";
    mp1.weight = 200;
    cout << mp1.brand << endl;
    cout << mp1.model << endl;
    cout << mp1.weight << endl;
    // 调用函数
    mp1.communicate();
    mp1.play_music();
    mp1.run_game();

    return 0;
}

2 堆内存对象

这种对象存储在堆内存,需要使用关键字new来创建对象,使用关键字delete来手动销毁对象,如果不调用delete销毁对象,对象则会一直存在。

堆内存对象的优势在于,可以长期存在,并且通过手动的方式灵活销毁。需要注意的是,堆内存对象需要使用指针保存对象的存储地址,对象指针使用->来调用成员。

// 手机类代码略
int main()
{
    // 创建一个堆内存对象
    MobilePhone* mp2 = new MobilePhone;
    mp2->brand = "苹果";
    mp2->model = "14 Pro Max";
    mp2->weight = 199;
    cout << mp2->brand << endl;
    cout << mp2->model << endl;
    cout << mp2->weight << endl;
    mp2->communicate();
    mp2->play_music();
    mp2->run_game();
    // 堆内存对象使用完成后需要delete
    delete mp2;

    return 0;
}

如果堆内存对象不销毁,则会导致所占用的内存空间持续存在,当堆内存对象的指针所在的代码块执行结束后,此时程序不再有有效的指针变量管理堆内存对象,这块所占用的内存空间就再也无法回收了,这种现象被称为“内存泄漏”。在实际开发的过程中要避免内存泄漏的问题。

另外,有时候刚刚调用了delete的对象,还能继续使用部分功能,但是这样的做法非常危险,严禁使用。必要时,可在调用delete后直接赋值为NULL。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值