美文网首页
Boolan第二周笔记

Boolan第二周笔记

作者: 杜大勇 | 来源:发表于2017-04-27 21:43 被阅读0次

一、C++三个特殊的函数(Big Three):拷贝构造函数,赋值构造函数和析构函数

class里面只要有指针,就一定要有拷贝构造(copy stor)和拷贝赋值(copy op=)

因为系统默认的函数所做的拷贝是浅拷贝,浅拷贝只拷贝指针,会造成内存泄漏,要避免进行浅拷贝。

copy stor和copy op=所做的是深拷贝,深拷贝所做的是内容的拷贝。

1、析构函数

       ~String(){ delete[] m_data;}

与构造函数相对应,对对象进行收尾工作,当对象所在的作用域结束前释放动态分配内存

2、拷贝构造

       String(const String& str);

函数收到的参数与函数类型相同

3、拷贝赋值

        String& operator=(const String& str);

        a检查是否为自我赋值

        b先清空自己

        c分配足够大的空间

        d拷贝内容

检查是否为自我赋值是为了提高效率和赋值正确性

函数第一步是清空自己,如果没有检查是否为自我赋值,在后面自我赋值时将导致赋值失败

二、(stack)栈和(heap)堆

Stack object的生命在作用域结束后结束,它会被自动清理

Heap object的生命在它被delete后结束,需要我们手动delete

new:先分配memory,在调用ctor

delete:先调用ctor,在释放memory

array new必须搭配array delete,否则会造成内存泄漏

相关文章

  • 2018-01-03

    Boolan第二周 class with pointer members: Big Three:拷贝构造、拷贝赋值...

  • 无标题文章

    Boolan-C++面向对象高级编程(上)第三周笔记 类与类之间的关系 一.继承inheritance:is a ...

  • C++笔记第一周(Boolan)

    C++笔记第一周(Boolan) 头文件的防卫式声明: 函数在class body里定义完成则默认inline 函...

  • Boolan第二周笔记

    一、C++三个特殊的函数(Big Three):拷贝构造函数,赋值构造函数和析构函数 class里面只要有指针,就...

  • 【Boolan】第二周笔记

    1.Big Three(三个特殊函数): 2.堆(heap)与栈(stack) 3.new与delete

  • C++笔记第二周(Boolan)

    Big Three: 拷贝构造函数、析构函数、拷贝赋值函数 字符串实现:带长度的char*不带长度,结束符约定'\...

  • Boolan:第二周

    三大函数:拷贝构造、拷贝赋值、析构 如果所写的类中带有指针,不能使用编译器中自动生成的拷贝构造和拷贝赋值函数,必须...

  • 2018-02-10

    Boolan STL 第二周 OOP与GP区别:OOP总是将data与methods关联在一起,GP则是将data...

  • Boolan.第二周笔记

  • C++面向对象高级编程(上)-第一周笔记 | Boolan

    笔记时间:2017-10-09 ~ 2017-10-23 来源:网易云课堂 / Boolan / GeekBan...

网友评论

      本文标题:Boolan第二周笔记

      本文链接:https://www.haomeiwen.com/subject/gmmnzttx.html