C/C++ 按值传递对象和按址传递对象

  1. 按值传递对象:在传递时候,会建立一个该对象的拷贝(调用复制构造函数);而从函数返回一个对象是,也要建立这个被返回的对象的一个拷贝。这样带来的内存开销非常大。
    • 在传递的过程中会默认调用复制构造函数,创建一个临时某个对象的临时副本。
    • 在函数返回时,传递该对象时创建的副本会被删除,这时候又会自动调用该对象的析构函数来释放内存。
    • 将一个对象按值传递给一个函数,会调用两次复制构造函数和两次析构函数(一个给参数传值,一次返回值);
    • 按址传递可以防止调用复制构造函数和析构函数,这样可以减小开销
  2. 按址传递对象:传递对象的实际地址,不用再创建对象,不会调用复制构造函数和析构函数,减小内存开销。
    • 按址传递破坏了按值传递的保护机制,解决方式就是使用const指针
    • 使用const指针可以防止任何试图对该对象所进行的操作行为,并且保证返回一个不被修改的对象。
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值