博览网--C++面向对象高级编程(上)-- C++学习第二周笔记

一、拷贝构造, 拷贝赋值, 析构


  Class 带指针 , 必须有拷贝构造和拷贝赋值函数

1) 拷贝构造函数: 

        浅拷贝:只拷贝指针

         深拷贝:创建空间并将数据拷贝过去, 拷贝指针及相关内容

         拷贝赋值及处理过程

            1) 检查是否自我赋值;

            2) 删掉本身的空间;

            3)重新创建空间;

            4)进行拷贝; 

2) 析构函数:

        实现一些清理工作


二、 堆栈内存管理


 1) 栈和堆的区别:

       栈离开作用域 scope 后死亡, 而堆不会。 

2) 常用关键字:

        static  / global 声明周期

        new: 先申请内存, 再调用构造函数

        delete: 先调用析构函数, 再释放内存

        VS编译器 : 使用new delete 会增加一个 cookie 结构用于存放申请内存的大小及目前的状态, 是申请还是释放

         delete[] 告诉编译器数组对象需要要对所有的对象进行析构, 针对包含指针的类会造成内存泄漏


三   扩展:

 1) static: 

           static函数没有this指针, 可以处理static 数据, 

           static变量要在类外面进行定义, 在类里面是声明

           调用静态函数的方法

                 (1) 通过object 调用

                 (2) 通过class name 调用

 2) 单件的创建:  

        (1)构造函数放到private, 可以使得外界无法创建该类对象;

        (2)通过静态函数创建并获取唯一的数据;

3)  cout, ostream 

          对操作符<<重载,   可以输出多种类型

4) 其他  

     类模板, 函数模板

     namespace


operator type() const;

explicit complex();

pointer-like object

function-like object

namespace

template specialization

stardard library

variadic template  (C++11)

move ctor  (C++11)

Rvalue reference (C++11)

auto(C+11)

lambda(C++11)

range-base for loop(C++11)

unordered containers(C++11)


习题编译报错: 


1. rectangle.h:61:51: error: ‘Rectangle& operator=(const Rectangle&)’ must be a nonstatic member function

inline Rectangle& operator=(const Rectangle& other) {

没有类的定义  改为 Rectangle& Rectangle;:operator=(const Rectangle&) 通过

你可能感兴趣的:(博览网--C++面向对象高级编程(上)-- C++学习第二周笔记)