文章目录
- 基础
-
- C++代码到程序执行过程* 1
- 动态库与静态库 1
- 构建一个静态链接库可以用到动态链接库吗?如果可以需要携带动态链接库吗?反之如何?
- 动态链接和静态链接 *1
- 指针跟引用的区别 1
- define和const的区别 1
- const 关键字 (注意)*1
- static 关键字 *1
- const和static在类中的注意事项 *
- sizeof 1
- volatile 1
- define和inline 1
- define 和 typedef
- 为什么使用内联函数inline 1
- inline *1
- 内联函数和宏函数的区别
- extern
- explicit 1
- 4种类型转换 * 1
- struct、union、class区别 1
- noexcept
- mutable 1
- NULL和nullptr的区别 1
- 野指针和重复释放 1
- 类模板和模板类 1
- 函数指针与回调函数 1
- function和函数指针的区别 1
- 指针函数和函数指针的区别
- 函数调用过程
- void*
- void* 能否做算术运算?为什么
- 字节序 1
- static 和 assert static
- C++异常机制
- 内存管理
- 面向对象编程(OOP)特性
-
- 面向对象和面向过程的区别
- C++类有哪些函数?
- 面向对象的三大特性 1
- C++派生类如何调用基类的构造函数?
- C++ 多态是什么? * 1
- 虚函数作用及底层原理 1
- 虚函数表和虚函数表指针 1
- 多态为什么函数传参是传指针或者引用?按值传大概率不行 1
- 构造函数和析构函数可以定义为虚函数吗?* 1
- 构造过程和调用过程虚表指针的动态变化 1
- 构造函数和析构函数为什么不能调用虚函数 1
- 哪些函数不能是虚函数 1
- 一个类可以有多个虚函数表吗?1
- 静态多态 1
- 左值右值 1
- 左/右值引用 1
- 拷贝构造/赋值函数 1
- 移动语义 1
- 为什么拷贝构造函数的参数要用左值引用,不用值传递 1
- 为什么需要将移动构造函数和移动赋值运算符标记为 noexcept?
- 在构造函数体和初始化列表赋值的区别
- 菱形继承 1
- 虚继承
- overload和override的区别 1
- 重载为什么不可以根据返回值进行重载 1
- 深拷贝与浅拷贝 1
- this指针
- STL
- C++ 11新特性
基础
C++代码到程序执行过程* 1
预处理:主要处理#include指令,宏替换,条件编译等,生成.i文件
编译:对源代码进行语法分析、词法分析,生成汇编代码,产生**.s文件**,
汇编:将汇编代码翻译成机器码,生成**.o目标文件**
链接:将目标文件和库文件链接在一起,生成最终的可执行文件 .exe
动态库与静态库 1
动态库中的代码和数据是运行时加载到进程中的,而不是链接时静态编译到可执行文件中的。当动态库被关闭时(动态库代码从内存中释放),对应的实例无法继续使用。
静态库中的代码和数据是链接时 静态编译到可执行文件中的,而不是运行时加载到进程中的。