C++ 学习笔记

打印 上一主题 下一主题

主题 829|帖子 829|积分 2487

堆,栈,RAII

堆:分配内存之后需要手动释放,否则,将要造成内存泄漏

  • new和delete操作的是free store
  • malloc和free操作的是heap
new的底层就是malloc
动态获取内存都是在堆中进行的
auto ptr = new std::vector()
智能指针

unique_ptr

独享它所指向的指针,也就是说,同时只有一个unique_ptr指向一个对象,不能多个unique_ptr指向一个对象,
如果说unique_ptr被销毁,那么它所指向的对象也会被销毁
不能进行拷贝复制
shared_ptr

共享他们呢所指向的指针,多个shared_ptr可以同时指向一个相同的对象,在计算机内部采用技术机制来实现
如果有对象关联的话,那么引用计数就会+1,如果智能指针减少,那么就会-1,当变成0,贼会将这个对象进行释放
删除器

在构造函数中第二个删除器就行了

  • 可以进行拷贝复制
两者区别

unique_ptr 占用资源比较小,所以大多数还是用unique_ptr吧
字面量

常量是固定的,在程序执行期间不会改变,这些固定的值,就是字面量
左值和右值

左值:一般指一个特定内存的具有名称的值
右值:不指向稳定内存空间地址的匿名值(不据名对象)
通过取地址来判断左值还是右值:
如果能取到地址 就是左值,否则就是右值
x++和++x

x++:右值:首先生成一个x值的临时拷贝。然后才最x递增,最后返回临时复制内容
++x;左值:直接对x递增后马上返回自身,所以说++x是一个左值
注意:字符串常量存储在程序的数据段中,会在加载的时候开辟内存空间,可以使用&来获取字面两的地址
左值就比较强
如果函数返回的是一个值,return x 那么就会变成 右值
左值引用

传入函数的时候用 void swap(int &a,int &b); 加入
注意: 指针运算的时候会发生计算
文件操作

文件流都在里面
复合

构造函数由内到外,析构函数由外道内,c++会默认进行执行这些代码,我们只要完成其中的函数
如果自己不写的话,那么就要调用默认的构造函数和析构函数
委托

指针,不同步,外边的函数有了,但是里面的函数有可能没有
什么是委托?
但是
继承

构造函数:先先构造自己的父类,然后再构造自己的
析构函数:先执行父类的析构函数,然后再析构自己
虚函数

non-virtual:不希望子类重新定义他
virtual:希望子类能够重新定义他
pure virtual:希望子类一定要重新定义他
[code]#include class CDocument{private:public:    void on_file_open()    {        std::cout
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

自由的羽毛

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表