1 C和C++有何区别?

2 数组名和数组名的地址有何区别?

3 C和C++语言中的static关键字有何作用?

4 用宏定义常量与用const关键字定义常量有何不同?

5 什么样的函数适合被声明为内联函数?

6 什么是智能指针?智能指针的作用是什么?智能指针分为哪几种?各有什么特点?

7 shared_ptr是如何操作目标对象引用计数的?

8 右值引用有何作用?

9 野指针、悬空指针和空指针有何区别?

10 静态链接和动态链接有何区别?

11 变量的定义和声明有何区别?

12 都有哪些比较常用的条件编译预处理指令?

13 写出用于判断int、bool、float和指针类型的变量是否为零值的语句

14 结构体类型的变量之间可以直接赋值吗?

15 sizeof和strlen有何区别?

16 static关键字在C和C++语言中有何不同?

17 volatile关键字有何作用?

18 一个变量可以既是const同时又是volatile的吗?

19 全局变量和局部变量有什么区别?操作系统和编译器是如何知道的?

20 三个函数strcpy、sprintf、memcpy有何区别?

21 试解释(*(void(*)())0)()语句的含义

22 指针与引用的区别与联系是什么?

23 typedef和define的区别是什么?

24 常量指针与指针常量的区别是什么?

25 堆区、栈区、堆栈和队列有何区别?

26 如何将0xaa66保存到地址为0x67a9的内存中?

27 C语言和C++语言中的结构体有何区别?

28 句柄和指针的区别与联系是什么?

29 extern "C"的作用是什么?

30 函数调用约定是什么?

31 C++作为面向对象编程语言的三大特性是什么?

32 C++语言都有哪些访问控制限定符?

33 C++的多态分为几种?

34 C++的动态多态有什么作用?需要满足哪些必要条件?

35 C++的动态绑定是如何实现的?

36 纯虚函数有什么作用?如何编写代码?

37 虚函数表是针对类的还是针对对象的?

38 类的构造函数能否被声明为虚函数?

39 类的析构函数能否被声明为虚函数?

40 在类的构造和析构函数中可以抛出异常吗?

41 如何禁止一个类被实例化为对象?

42 多重继承存在什么问题?如何解决?

43 对一个空类求sizeof会得到多少?

44 重载、覆盖和隐藏有何区别?

45 拷贝构造函数和拷贝赋值操作符函数在实现上有何区别?

46 如何理解基于虚函数的多态性?

47 C++语言中的struct和class有何区别?

48 C++语言都提供了哪些显式(强制)类型转换操作符?

49 类成员函数间的重载、覆盖和隐藏有何区别?

对比项重载覆盖隐藏
范围同一个类中父子类中父子类中
函数名相同相同相同
参数表和const限定不同相同相同或不同
返回值类型相同或不同相同相同或不同
异常说明相同或不同相同相同或不同
virtual关键字可有可无基类必须有,子类可有可无可有可无

50 RTTI是什么?

51 既然C语言已经提供了强制类型转换,为什么C++语言还要提供类型转换操作符?

52 一个空类都有哪些成员函数?

53 什么是函数模板和类模板的特例化?

54 为什么类的析构函数一般都被声明为虚函数?

55 类型转换构造函数、类型转换操作符函数、拷贝构造函数与拷贝赋值操作符函数有何区别?

56 C++语言的标准模板库主要包括哪些内容?

57 作为映射容器hash_map是否可以完全取代map?

58 C++标准模板库中的hashtable是如何解决哈希冲突的?

59 vector内部共维护几个迭代器?

60 vector的resize和reserve有何区别?

61 vector的size和capacity有何区别?

62 vector可以存放引用型元素吗?

63 vector的迭代器为何会失效?

64 vector的清空和释放有何区别?

65 list与vector有何区别?

66 deque相比于vector和list有何优势?

67 在vector、list和deque之间应如何选择?

68 map、multimap、set、multiset四种关联容器的底层数据结构是什么?

69 map、multimap、set、multiset四种关联容器各有什么特点?

70 在map中如何判断一个给定的键是否存在?

71 为什么在map、multimap、set、multiset中插入或删除元素的效率比vector和deque高且之前获得的迭代器不会因此而失效?

72 为什么象map或set这样的容器不象vector一样提供reserve函数来预留内存空间?

73 unordered_map和unordered_set的底层数据结构是什么?

74 unordered_map和map有何区别?

75 C++标准模板库中的迭代器分为几种?

76 如何在共享内存上使用C++标准模板库中的容器?

77 如何在map中插入数据?

78 如何通过容器的earse方法删除一个元素同时迭代到下一个元素?

79 vector和map的下标操作符会做边界检查吗?

80 删除vector中的元素会令其释放内存吗?

81 同样是根据键获取值,map的下标操作符和find函数有何区别?

82 频繁调用vector的push_back方法对性能有何影响?

83 new/delete和malloc/free有何区别?

84 delete和delete[]有何区别?

85 如何判断内存分配是否失败?

86 在哪些场景下会发生内存泄漏?如何定位内存泄漏?

87 都有哪些内存分配方式?

88 堆内存和栈内存有何区别?

89 静态内存和动态内存有何不同?

90 如何定义只能在堆区或栈区创建对象的类?

91 浅拷贝和深拷贝有何区别?

92 什么是结构体的字节对齐和补齐?

93 用new分配的内存能否用free释放?用malloc分配的内存能否用delete释放?