C++面试总结之C++语言特性(一)

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值