1. Volatile
提醒编译器它后面所定义的变量随时都可能改变,因此编译后的程序每次需要存储或读取该变量时,都从变量地址中读取数据。
Volatile的作用:
(1) 阻止编译器为了提高速度将一个变量缓存到寄存器内不写回
(2) 阻止编译器调整操作volatile变量的指令顺序
但是volatile能够阻止编译器调整顺序,也无法阻止CPU动态调度换序,例如:



解决方法:barrier(): 优化内存屏障(联系到内核同步机制)
https://blog.youkuaiyun.com/benpaobagzb/article/details/51050633
Barrier I/O:硬件级别的同步
应用场景:
(1) 中断服务程序中修改的供其他程序检测的变量
(2) 多任务环境下个任务见共享的标志
(3) 存储器映射的硬件存储器
2.static的用法(区分C语言和C++,两种语言下作用有所不同)。
在C语言中,static的用法:
(1) 在函数体,一个被声明为静态的变量在函数调用过程中值不变
(2) 在模块内(函数体外),一个被声明为静态的变量可以被模块内所有函数访问,但不能被模块外其他函数访问,他是一个本地全局变量
(3) 在模块内,一个被声明为静态的函数只能被该模块内其他函数调用
在C++中,static的用法:
类的静态成员或方法不属于类实例,而属于类本身,并在所有实例间共享,调用时应用类名+::来引用
3. const关键字的作用

与define相比,const内存效率更高,编译器通常将const 变量保存在符号表中,而不会分配存储空间,这使得它成为一个编译期间的常量,没有存储和读取的操作
4.Explicit的作用
防止执行隐式类型转换
5. 四大转型操作符
static_cast, const_cast, dynamic_cast, reinterpret_cast
语法为:***_cast<type&

本文详细总结了C++面试中的重要知识点,包括Volatile的内存屏障作用、静态变量的用法、const关键字的内存效率、Explicit防止隐式转换、四大转型操作符的使用、C++的封装、继承和多态特性、以及构造函数与析构函数的虚函数性质。此外,还探讨了内联函数、静态成员函数和内部类的功能,抽象类与虚函数的区别,接口、抽象类和集合的概念,头文件引用的不同方式,以及指针和引用的差异等。
最低0.47元/天 解锁文章
647

被折叠的 条评论
为什么被折叠?



