C++ 基础知识 (一)

1. const 可以提高效率, 编译器通常不为普通 const 常量分配存储空间, 而是将它们保存在符号表中, 这使它成为编译期间的一个常量, 存取不需要内存操作, 所以效率比较高

 

2. volatile 关键字. 用于多线程程序中, 一个定义为 volatile 的变量是说这个变量可能会被意想不到的改变, 这样编译器就不会去假设这个变量的值了. 使用 volatile 修饰的变量, 编译器不会对其进行优化, 每次读取时都会去内存中读

 

3. ASSERT() 断言. 用于 ASSERT(n != 0) 表示当 n == 0 时程序会退出,

 

4. int main(int argc, char** argv)

argc 是输入命令的条数, argv 存储命令

 

5. new/delete malloc/free 的区别

5.1 都可以动态分配和回收空间

5.2 new 是类型安全的, int *p = new float[2] 是错误的, malloc 检测不出

5.3 new 调用构造函数, delete 调用析构函数

5.4 malloc/free 需要库文件 stdlib.h 支持

 

6关键字 explicit 的作用. 明确指出禁止隐式转换.

 

7. strlen sizeof

strlen("") -> 0

sizeof("") -> 2

 

8. 引用和指针的区别

8.1指针可以为空, 引用必须指向某个值

8.2 指针可以重新赋值, 引用不可以

8.3 指针和引用都可以用于面向对象的多态

8.4 指针使用前需要判断是否为空, 引用不需要

8.5 引用由指针实现

 

9. typedef define 的区别

9.1 typedef 支持类型检查, 增加可读性

9.2 作用于不同, define 是全局的, typedef 有作用域

 

10. struct union

typedef union {double i; int k[5], char c;} DATE

struct {int cat; DATE cow; double dog;} too;

int 4 自己, double 8 字节, union 也需要对齐, 所以 DATE 需要 24 字节

too 的大小也按 8 字节对齐, 所以 too 40 字节

 

原文地址:https://www.cnblogs.com/zhouzhuo/p/3668677.html