Geekband C++ Week2 Notes

  • 两类典型的class

    • 含有指针成员
    • 不含指针成员
    • 指针成员会对class的操作造成一些本质性的影响,主要源于资源的生命期管理
  • 拷贝构造

    • 默认拷贝构造的问题,进行了浅拷贝,这会造成困扰,原有的成员泄露出去了,新成员被多个实例引用
    • 进行深拷贝就好了,自己写拷贝构造函数
  • 赋值运算符同上

    • 另外要注意自身赋值的问题,防止造成内容丢失
  • 三个重要成员函数

    • 拷贝构造
    • 赋值运算符
    • 析构函数
  • 含有指针成员的class必须有拷贝构造函数和赋值运算符,除非禁用

  • 堆和栈

    • 堆栈的概念是和生命期直接相关的,栈上的对象生命期由函数调用来管理,堆上对象的生命期由程序员手工管理,其实这是很好理解的,因为栈区是连续的,重置栈底自然就销毁了对象

    • 堆区对象是完全通过引用被外界持有的,所以需要手动控制生命期

    • 静态成员(类成员)的生命期持续到程序结束,用于共享属性,单例等情况

    • new和malloc的区别,malloc分配出来的是原始内存(void*),new出来的是初始化过的对象

  • 静态变量和静态方法

    • 静态变量和静态方法是被所有类成员所共享的
    • 静态方法只能访问静态成员函数
    • 静态成员必须初始化后才能使用
    • 静态函数可以直接通过类名调用,也可以通过实例调用

你可能感兴趣的:(Geekband C++ Week2 Notes)