1. 常量折叠(例)
在编译器进行语法分析的时候,将常量表达式计算求值,并用求得的值来替换表达式,放入常量表。可以算作一种编译优化;
因为编译器在优化的过程中,会把const全部以内容换掉,这个出现在预编译阶段;但在运行阶段,const变量内存中存储的东西可能确实已改变;
2.
1 time_t t; 2 t = clock(); // 程序从启动到函数调用占用CPU的时间 3 time(&t); // 获取系统时间 4 t = localtime(); // 将一个UTC时间转为本地时间
3. “深拷贝”:不会拷贝静态成员(例)
类的静态成员是所有类的实例共有的,存储在全局(静态)区,只此一份,不管继承、实例化还是拷贝都是一份;
4. 引用类型的sizeof运算:将得到被引用对象所占空间的大小;
sizeof(char &) = 1;
5. 派生类构造函数的“调用顺序”:
1)完成对象所占整块内存的开辟,由系统在调用构造函数时自动完成;
2)调用基类的构造函数完成基类成员的初始化;
3)若派生类中含对象成员、const成员或引用成员,则必须在初始化表中完成其初始化;
4)派生类构造函数体执行;
6. STL的“一级容器”:
一级容器指容器元素本身是基本类型,非组合类型,有vector,deque,list;
7. “逗号表达式”中间不能为空,必须要有表达式(例)
8. 两个线程并发执行以下代码,假设a是全局变量,初始为1,那么以下输出()是可能的?
void foo() { ++a; printf("%d ", a); }
A:3, 2 B:2, 3 C:3, 3 D:2, 2
此题关键点:
(1)两个线程可随时被抢占;
(2)++a和printf不是原子指令,可随时被打断;
(3)函数printf,a作为参数压栈后,a再变换则不会影响输出(printf实际打印的是压栈的参数,是值拷贝的栈变量);
9.
时间: 2024-10-08 05:08:28