C++知识点整理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++知识点整理相关的知识,希望对你有一定的参考价值。

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.

以上是关于C++知识点整理的主要内容,如果未能解决你的问题,请参考以下文章

C++ 基础知识回顾总结

C++基础知识点整理

C++知识点整理

大一下C++期末考试知识点整理

IOS开发-OC学习-常用功能代码片段整理

这些 C++ 代码片段有啥作用?