C++复习重温的收获004

拷贝构造

String(const String& str)

拷贝复制

String& operator=(const String& str)

析构函数

~String()

 

String s1("hello")

1.String的构造(构造函数)实际是利用指针传入new的char数组m_data,数组长度为原内容+1再将其拷贝到m_data中

由于本身构造的时候new了内存,因此需要在析构函数中将其delete否则会造成内存泄漏。

 

2.如果类带有指针,必须有拷贝构造和拷贝复制,因为本身拷贝构造和拷贝复制默认一一对应,如果构造的对象中有指针,对象的内容其实是只有指针的,并不含有值。(浅)拷贝将会指向同一地址。

 

String s2(s1)

3.拷贝构造

利用指针传入,new一块新的空间,实现(深)拷贝

 

s2=s1

4.拷贝赋值

理论上先把原有的空间清空,然后创建和拷贝内容需要的一样大的空间,再把拷贝的内容传入,与此同时,还需要先进行自我赋值的检测,因为,如果是自我赋值,在清除原有空间的时候就把内容清除了,会产生指针悬挂

 

5.stack栈

存在于某一作用域的一块内存空间,调用函数,函数本身会形成一个栈用来放置他所接收的参数以及返回地址,函数本体内声明的任何变量也都在栈中

 

6.Heap堆

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值