alignas&alignof
1 |
|
and&&and_eq
1 |
|
asm
用于在C++代码中嵌入汇编语言,不常用
auto
bitand&bitor
1 | void showBitAndor() { |
constexpr
1 | //运行时计算 |
constexpr所修饰的变量一定是编译期可求值的,所修饰的函数在所有的参数都是constexpr时,一定会返回constexpr。
constexpr的好处:
- 是一种很强的约束,更好的保证程序的正确语义不被破坏。
- 编译期可以在编译期对constexpr的代码进行非常大的优化,比如将用到的constexpr表达式都直接替换成最终结果等。
- 相对于宏来说,没有额外的开销,更安全可靠。
const_cast
1 | void testConstCast(){ |
const_cast一般不推荐使用,出现的时候大多数意味着代码结构出现了问题,const本身表示不可变的,const_cast转换 却破坏了这个不变性。
decltype
用于获取变量或者表达式的类型或者函数的返回类型。
1 | struct A { double x;}; |
dynamic_cast
沿继承层级向上、向下及侧向,安全地转换 到其他类的指针和引用。
1 | struct Base{virtual ~Base(){}}; |