C++面试整理

1. 虚函数表在类中还是对象中
2. 如何确定一个对象的虚函数的地址
3. 析构函数为什么要是虚函数
4. const和define的区别:编译器处理方式,类型检查,内存空间,重复定义
5. 指针和引用的区别:储存内容,内存空间,多级,自增运算,间接直接访问,初始化,赋空值
6. delete和delete []的区别,在析构函数上
7. a是数组,a+1和&a+1的区别
8. 不用临时变量实现两个变量的交换
9. 函数指针是什么,怎么用
10. C++源文件从文本到可执行文件经历的过程
11. nullptr和NULL的区别
12. C++11 右值引用
13. C和C++的区别
14. malloc的原理,与calloc,alloc,realloc的区别
15. 解决内存泄漏的方法
16. 什么是野指针
17. 三种智能指针的用法
18. static 局部静态变量,全局静态变量,静态数据成员,静态成员函数
19. union和struct的区别
20. new 和malloc的区别,参数,返回类型,自定义类型的构造和析构,重载,内存区域,分配失败,内存泄漏
21. C++四种强制类型转换
22. 前置++与后置++的区别,重载的区别
23. 静态库和动态库的区别
24. struct内存大小的计算
25. strlen,strcpy,strcat,strcmp,strncpy的实现
26. memcpy,memset的实现
27. C/C++内存管理方式,内存分配 堆栈自由存储区全局静态存储区常量存储区
28. 堆和自由存储区的区别,自由存储区是抽象概念,程序员可以重载new
29. 深拷贝和浅拷贝
30. debug和release的区别
31. C/C++动态链接库的相互调用
32. 结构体的比较C不可以C++可以
33. 拷贝构造函数引用传递的原因
34. 程序崩溃的原因 4
35. 字符串输入:cin;cin.get(ch);cin.get(str,80,ch);cin.get();cin.getline(str,80,ch);getline(cin,str);gets(ch);ch=getchar();
36. lambda表达式,可以忽略参数表和返回类型,永远包含捕获列表和函数体
37. C++编程优化:
    * 对齐原则
    * 可以为了效率拷贝代码
    * 堆内存初始化
    * *&是对指针的引用
    * 静态方法不能调用非静态方法和非静态成员变量
    * 头文件不可相互包含
    * 头文件不使用名字空间
    * 依赖本地环境的参数要专门写配置文件
    * 频繁使用的代码中少用容器
    * 项目开发时使用条件编译
    * 等等
    <https://blog.csdn.net/u014796694/article/details/81210868>
38. 位运算 -1右移 左移
39. char str[10]="";char str[10]={'\0'};做了什么初始化
40. set,map中[x]如果x不在set,map里就会自动生成一个[x]元素
41. const volatile mutable
42. 抽象类有以下特点:不能实例化;不能作为函数参数及函数返回类型;可以定义抽象类类型的指针。 
43. STL算法中的next_permutation()算法的用法? 
44. 二维数组作为参数传递的注意事项? 
45. sizeof运算符在编译阶段处理的特性? 
46. sizeof(动态数组,字符串,数组)? 
47. sizeof(class)需注意情况,静态,虚函数
48. 菱形继承(钻石继承)的解决方法:class Child:virtual public Base
49. rand()和srand()函数的用法
50. \abc与\xabc分别表示什么? 
51. 如何只让类对象只在栈(堆)上分配对象? 只能构造函数定义(new)
52. char扩展为int的两种情况及注意事项?
53. 静态成员函数的使用方法 两种
54. 不能声明为虚函数:普通函数,友元函数,内联函数,构造函数,静态成员函数
55. 不能被继承的类:构造函数私有
56. 不能被继承的且能正常使用的类:我们为它增加一个虚继承的父类,它是父类的friend(友元),父类的构造函数是private
57. STL算法中partition算法的用法? 
58. define与typedef的区别? 
59. typedef int * pint ;#define PINT int *;const pint p ;//p不可更改,但p指向的内容可更改;const PINT p ;//p可更改,但是p指向的内容不可更改。
60. 公有继承、私有继承后基类public、protected、private成员在派生类中的访问权限? 
61. 声明与定义的区别? 
62. 顶层const与底层const的区别? 拷贝 const_cast
63. 什么是常量表达式? 
64. explicit关键字的作用? 
65. endl, flush, ends
66. 什么时候会递增递减shared_ptr的引用计数?
67. 什么时候会使用默认构造函数:这个类的静态数组,动态数组,标准库容器的元素类型是这个类 ,另一个有无参数构造函数的类以这个类的对象为成员
68. 什么时候使用拷贝构造函数? 
69. 类模板的优点? 
70. 字符串常量不能修改,可以对指针重新赋值,但原来的常量就会变垃圾。
71. 如果用位方法求x%y,则其通用公式为x&(y-1)
72. int fseek(FILE *stream, long offset, int fromwhere);
73. 合成的拷贝构造函数  浅拷贝
74. 编写拷贝赋值运算符时应该注意的问题? (临时实例)
75. =default =delete
76. 在类名(函数名)后跟一个关键字final,可以阻止这个类成为基类(被覆盖)
77. 若通过基类的引用或指针调用派生类虚函数,则使用基类中定义的默认实参,即使实际运行的是派生类中的函数版本。即默认实参是静态绑定,而虚函数确是动态绑定。
78. 可以利用作用域运算符来回避虚函数机制。
79. 负数的二进制表示 取反加一
80. char dog[]="wang\0miao";sizeof(dog);//结果为10:wang(4)+\0(1)+miao(4)+1 strlen(dog);//结果为4
81. int (*p)[3] p是个什么
82. 打印字符串地址
83. 虚函数表位于对象地址首部,大小和指针一样都是8字节
84. 补码:正数补码是本身,负数补码除去符号位按位取反再加一
85. 对引用类型,数组,动态数组(指针),string,vector(返回固定部分size 24)执行sizeof
86. sizeof 带static成员的类
87. clock();
88. 内联函数的优点以及和宏定义的区别? 
89. 只有当Dpublic继承自B时,用户代码才可以使用派生类向基类的转换,否则,不可以使用。 
90. 虚函数内存分配? 子类虚函数与父类虚函数的排列顺序
91. 容器适配器有哪些?它们的默认底层适配容器是什么? 
92. vector中的reserve函数和resize函数的区别? 
93. 几种容器迭代器删除元素时会发生什么? 
94. 类成员函数的重载、覆盖和隐藏区别? 
95. 非常量引用类型必须严格匹配,常量引用可以在内置类型之间相互引用 
96. 枚举的每一项都是一个唯一的const类型值
97. 枚举可以自动转成int,而int却不能转成枚举
98. ifndef的使用 
99. 在函数内对指针本身(地址,也即指向)进行修改,不会影响到外部实参
100. IO对象无法复制或者赋值,所以IO对象作为函数形参或返回值时只能使用指针或引用。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值