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