C++基础知识学习记录

一、基础
    1.智能指针:管理指针,避免申请的空间忘记释放,防止内存
        1.1 unique_ptr:保证同一时间智能有一个智能指针指向该对象,避免资源泄漏。
        1.2 shared_ptr(共享型,强引用):多个智能指针可以指向相同对象,最后一个引用销毁时释放资源,使用use_count查看被引个数。解决了独占性,但是相互引用会导致锁死。
        1.3 weak_ptr(弱引用):解决两个强引用导致的死锁问题,将其一替换。

    2. 内存分配
        2.1 栈:编译器管理,存局部变量和函数参数
        2.2 堆:由程序员自己开辟和释放,容易出现内存泄漏和空闲碎片的问题
        2.3 全局/静态存储区:分为初始化和未初始化区域,存储全局变量和静态变量
        2.4 常量区:存储常量,一般不允许修改
        2.5 代码区:存放程序的二进制代码

    3. 指针/引用 参数传递
        指针参数传递(开辟空间存放的是指针变量的地址):会开辟一块新的内存空间存放传输而来的值,并指向原指针指向的对象。可以改变指向对象的值,但是不能改变指针的值。
        引用参数传递(引用对象的地址值):没有发生拷贝,相当于起别名,都视为间接寻址的操作。

    4. 从const和static关键字
        4.1 static作用:控制变量的存储方式和可见性
            4.1.1 修饰局部变量:用static之后局部变量将存放在静态数据区,其生命周期将一直延续到程序执行结束。作用域不变。
            4.1.2 修饰全局变量:全局变量既可以在文本文件中被访问,也可以在工程中被访问(extern声明)。static之后会改变其作用域使其智能在本文件可见。
            4.1.3 修饰函数:同修饰全局变量。
            4.1.4 修饰类:修饰类中函数,则该函数不属于类中特定对象;修饰类中变量,可以通过类和对象进行调用。
            4.1.5 类成员\类函数声明static
                内存只分配一次,值不变
                模块内的static全局变量智能被模块内函数访问
                类中的static成员变量属类所有,只有一份拷贝
                类中static成员函数,不接收this指针,只能访问类的static变量
                static 类对象必须要在类外进⾏初始化,static 修饰的变量先于对象存在,所以 static 修饰的变量要在类外初始化
                static 类成员函数不能访问⾮ static 的类成员,只能访问 static修饰的类成员
                static 成员函数不能被 virtual 修饰,static不属于任何对象或实例;静态成员函数没有 this 指针,虚函数的实现是为每⼀个对象分配⼀个 vptr 指针,⽽ vptr 是通过 this 指针调⽤的,所以不能为 virtual

        4.2 const关键字:
            4.2.1 修饰基本数据类型:表示常量不可修改其值
            4.2.2 修饰指针变量和引用变量:如果 const 位于⼩星星的左侧,则 const 就是⽤来修饰指针所指向的变量,即指针指向为常量;如果 const 位于⼩星星的右侧,则 const 就是修饰指针本身,即指针本身是常量。

            4.2.3 应用到函数:const 所修饰的部分进⾏常量化,保护了原对象的属性。 [注意]:参数 const 通常⽤于参数为指针或引⽤的情况;
            4.2.4 类中用法:const 成员变量,只在某个对象⽣命周期内是常量,⽽对于整个类⽽⾔是可以改变的。一个类可以创建多个对象,其const数据成员值可以不同。因此不能在声明中初始化值,只能在构造函数中进行。
        4.3 要注意,const 关键字和 static 关键字对于成员函数来说是不能同时使⽤的,因为 static 关键字修饰静态成员函数不含有 this 指针,即不能实例化,const 成员函数⼜必须具体到某⼀个函数。

注:日常学习,后续推进

  • 26
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值