>
Home

登龙(DLonng)

选择大于努力

C/C++ 面试易错补充


版权声明:本文为 DLonng 原创文章,可以随意转载,但必须在明确位置注明出处!

考完研了,也休息了半个月了,开始准备找 C/C++ 的实习工作,记录一些重要的 C++ 语法特性:

  • for (int i = 0; i <= 10; i++) 中的 i 位于语句作用域
  • 变量存储类型:自动,寄存器,静态,外部
  • 引用是对象的另一个名字,主要作为函数形参使用
  • const 引用必须被定义为 const 类型
  • break 用于跳出最近的循环或 switch 语句
  • ifstream(input file stream), ofstream(output file stream)
  • 在 C++ 中尽量避免使用指针和数组,用引用代替指针,vector 代替数组,string 代替 C 风格字符串
  • 指向 const 对象的指针,指针指向的值不能改变:const int a = 10; const int *pa = &a;
  • const 指针,指针不能改变指向:int a = 0; int *const = &a;
  • 返回指针的函数称为指针函数
  • C++ 中参数和返回值的传递方式:引用传递,值传递,指针传递
  • 引用传递的是引用对象的内存地址
  • 指针是一个实体,而引用仅是个别名
  • 引用只能在定义时初始化,之后不可变,而指针可变
  • 引用没有 const,指针有 const
  • 引用不能为空,指针可以为空
  • 引用不需要分配内存区域
  • sizeof(引用) = 变量内存大小,sizeof(指针) = 指针本身的内存大小
  • 面向过程:程序 = 算法 + 数据
  • 面向对象:程序 = 对象 + 消息,对象内部还是算法和数据
  • 结构体用来处理较少的程序基础数据,而类用来处理复杂逻辑
  • 含有纯虚函数的类成为抽象类(抽象接口)
  • 派生类和基类共用静态成员
  • 类的静态成员可以成为成员函数的可选参数
  • 类的静态成员类型可以是所属类的类型
  • 类的静态方法只能访问静态成员
  • 多态性在 C++ 中通过虚函数和继承机制来实现
  • 公有继承保持访问级别,保护继承 public 和 protected 都变为 protected 成员,私有继承全部变为私有成员
  • 基类中的 private 成员不能被继承
  • 调用复制构造函数:对象通过值传递传入函数体,对象通过值传递从函数返回,一个对象通过另一个对象初始化
  • C++ 支持函数参数个数不确定:int max(int num, ...)
  • 在内联函数内不允许用循环和 switch 语句,如果存在则视为普通函数编译代码
  • 程序中尽量少使用指针形参,会降低可读性
  • 静态函数没有 this 指针
  • 类的私有成员不可以被外部类访问,但是可以通过宏定义访问类的私有成员:#define private public,这是一种非常规手段
  • 函数重载是指在相同的作用域中,具有相同的名称而形参列表不同的多个函数,返回值也可以不同,但不是必须的
  • STL 和 Boost 等都采用模板技术(大量使用了类模板),使用泛型编程
  • 模板未使用前,编译器不会编译该模板,只有在模板被实例化时才生成相应类型的代码
  • STL 使用迭代器来遍历容器
  • STL 顺序容器:vector, deque, list
  • STL 关联容器:set(唯一元素的集合), multset(允许一个键对应多个实例), map(键-值), multimap(允许一个键对应多个实例)
  • begin 迭代器指向容器中的第一个元素,end 迭代器指向最后一个元素的下一个位置
  • 不能存储 end() 迭代器的返回值,当进行插入或删除操作后,end() 所指向的元素可能不存在,迭代器失效,应该每次重新计算 end()
  • 泛型编程:独立于任何特定类实现的方式编写代码,针对不同的类型提供不同的实现
  • 如何实现泛型编程:模板技术,函数重载
  • 数据库实现到第三范式已经足够了
  • 数据库事务的操作是一个整体,不可分割
  • 数据库管理系统:Oracle,MySQL 等等
  • 操作系统的最小调度单位是线程
  • 资源的最小单位是进程
  • 一个程序至少有一个进程,一个进程至少有一个线程
  • 进程拥有独立的内存单元,但线程共享进程的内存
  • 进程能够独立运行,但线程必须依附进程
  • 线程同步方式:临界区,互斥量,信号量等
  • 最常用的内存管理模式:页式管理
  • OSI 7 层模型:物理,数据链路,网络,传输,会话,表示,应用
  • TCP/IP 4 层模型:网络层(物理,数据链路),网际层,传输层,应用层(会话,表示)

本文原创首发于微信公号「登龙」,分享机器学习、算法编程、Python、机器人技术等原创文章,扫码即可关注

DLonng at 04/09/19