Boolan-C++开发工程师-C++面对对象高级编程(上)- 第二周笔记
来源:互联网 发布:js 按键 编辑:程序博客网 时间:2024/05/19 22:57
如有错误,欢迎不吝指正
1. 三大函数
Big Three:类的三大特殊函数——拷贝构造、拷贝赋值、析构函数。有指针的类必须要有Big Three。
当构造类时,若没有构建拷贝构造函数和拷贝赋值函数,系统会自动构建,使用字节到字节的拷贝。这适用于没有指针的类,但不适用于有指针的类。因为有指针的类使用系统默认的函数时,只是简单的对指针本身的值进行拷贝,而实际上所需要的拷贝是将指针所指向的内存进行拷贝。
拷贝赋值的过程:清空左值(delete),赋予足够大的空间(new),拷贝(strcpy)
一定要在operator=中考虑到自我赋值的情况,不然自我赋值时程序会错误,导致所指内容被删除
2. 堆(heap),栈(stack)与内存管理
栈:存在于作用域内的一块内存空间,存储函数参数、局部对象等。stack object的生命在作用域结束之际结束,会被自动清理。
static object的生命在作用于结束后仍然存在,直到整个程序结束。
堆:由操作系统提供的一块global内存空间,可动态分配获得,其生命在被delete之际结束,所以new出来东西一定要记得delete。
3. 进一步补充
static
声明与定义
定义:造成变量获得内存,即为定义
静态的数据要在类声明的外面写定义语句。
静态函数只能处理静态数据。
4. 其它的体会
内存泄漏:动态分配的堆内存没有被回收,即new出来的东西没有被delete。
内存溢出:动态分配堆内存时内存不够无法分配,一般由内存泄漏导致。
引用符&:对对象的引用。
取地址符&:取得对象的地址。
const int *p:底层const,指向const int的指针,指针本身不是const。
int const *p:与const int *p一样。
int * const p:顶层const,指向int的const指针,在声明时需要初始化,之后不能改变。但其指向的int的值可以被改变。
const int * const p:指向const int的const指针。
- Boolan-C++开发工程师-C++面对对象高级编程(上)- 第二周笔记
- Boolan-C++开发工程师-C++面对对象高级编程(上)- 第三周笔记
- Boolan——C++开发工程师——C++面对对象高级编程(上)—— 第一周笔记
- Boolan C++面向对象高级编程(上)第二周笔记
- 【boolan c++】面向对象高级编程(下)week1
- Boolan C++面向对象高级编程(上)第三周笔记
- C++ 开发工程师 第二周笔记 boolan.com
- Boolan C++面向对象高级编程(上)第一周笔记
- Boolan第一周---C++面向对象高级编程(上)
- Boolan C++面向对象高级编程(下)第五周笔记
- C++面向对象第二周笔记<Boolan>
- [C#]一点面对对象编程
- Boolan-C++开发工程师-泛型编程-第一周笔记
- Boolan 第二周笔记
- Geekband C++面向对象高级编程(上) 第二周笔记 暗影行者
- GeekBand C++ 面向对象高级编程(上) 第二周笔记
- 【博览网】面向对象高级编程(上)——第二周课程笔记
- GeekBand笔记-《C++面向对象高级编程(上)》 第二周
- Java学习从入门到精通的简单介绍
- Linux入门学习——进程
- SwipeRefreshLayout 无法刷新
- 欢迎使用CSDN-markdown编辑器
- 数据库开发规范
- Boolan-C++开发工程师-C++面对对象高级编程(上)- 第二周笔记
- 位操作设置某几位为0
- ArrayList和LinkedList的区别-完整总结
- 2-从C到C++
- 数据库的创建+约束
- 友元类初探
- java事件机制
- QT编写视频监管平台(开源)
- 第十三篇:Android 序列化的两种方式