c++知识点总结

  1. c++有继承和派生的概念,c++还有构造函数和析构函数的定义,这两者之间组合起来有些问题需要注意下。
    1. 派生类中的构造函数需要显式的去掉用基类的构造函数,并进行赋值初始化操作;
    2. 基类中的析构函数需要设定成虚函数,这样派生类中的函数才会被真正的调用到,否则会出现派生类中的析构函数没有被调用,导致内存泄漏
  2. const关键字
    1. 修饰变量的时候,变量被设定成常量,不能被修改。数据被存储在常量区
    2. 修饰class中的成员变量的时候,变量只能被初始化一次,不能再被修改。初始化在参数列表里,不能在函数中去设定值
    3. 修饰class中的成员函数的时候,函数里不能修改成员变量。如果有要修改的成员变量在const修饰的函数里,需要在声明变量的时候用mutable修饰。
    4. 常量指针和指针常量:常量指针(const int* p = &a,建议使用)代表常量的指针,指向的内容是常量,可以用在传参数的部分,可以保证不修改数据,类似常引用;指针常量(int * const p = &a),代表指针是一个常量,指针指向的位置不能修改,但是内容仍然是可以修改的,比如:*p = 2;如果p++会报错。
  3. static关键字
    1. static变量存储在全局静态区,存储着静态变量
    2. 修饰局部变量的时候,可以扩大变量的声明周期,随着程序的消亡而释放掉,不会在函数退出后就消亡
    3. 被static修饰的变量只能在当前文件中访问,被限定了变量的作用域
    4. 修饰成员变量的时候,需要在构造对象之前去设置静态变量的值,变量属于class,不只属于某一个object
    5. 修饰成员函数的时候,不需要this指针去调用,不关联任何对象,不能调用非静态的成员函数和非静态的成员变量
    6. 可以参考https://www.cnblogs.com/BeyondAnyTime/archive/2012/06/08/2542315.html进行学习
  4. extern关键字
  5. virtual关键字
    1. 修饰成员函数,加上该关键字修饰函数变为虚函数
    2. virtual void fun() =0;为纯虚函数,表示对应的class只是定义了接口,不能实例化出对应的对象
  6. 多态
  7. 智能指针
    1. 常见的智能指针有auto_ptr/shared_ptr/weak_ptr/unique_ptr等,auto_ptr因为赋值给新的变量后会删除掉封装的原指针,使用起来有较大的风险,不建议使用,unique_ptr不能进行拷贝,避免了上述问题,所以最好使用unique_ptr替换
    2. 。。。
  8. 空的类的大小是1Byte,其实空的类应该是没有大小的,但是为了创建的时候需要有占据一定的位置,被设置为1。空的类中也同样存在4个基本函数:默认构造构造函数,拷贝构造函数,拷贝构造操作符,析构函数。如果只是声明上述4个函数之一,类的大小也是1,但是如果有的函数被设置为virtual的虚函数,那么类中就要存储一个虚函数表,类的空间就是4(或者是8,根据电脑的位数决定)。类中存储成员变量,成员函数被存储在代码区,不在类里面
  9. 锁相关的知识点(https://blog.51cto.com/13665347/2095435
    1. 互斥锁
    2. 条件变量
    3. 信号量
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值