目录
- 1.面向对象的特征?
- 2.一个C++源文件从文本到可执行文件经历的过程?
- 3.new和malloc的区别?
- 4.虚函数是什么以及其作用?
- 5.虚函数表是什么?
- 6.什么函数不能声明为虚函数?构造函数为什么不能为虚函数?
- 7.纯虚函数是什么?
- 8.虚函数与纯虚函数的区别?
- 9.简单描述虚继承与虚基类?
- 10.简单描述多态?
- 11.C++内存分为哪几块?
- 12.简单介绍内存池?
- 13.简单描述内存泄漏?
- 14.内存中的堆与栈有什么区别?
- 15.说几个C++11的新特性?
- 16.简单介绍智能指针?
- 17.shared_ptr 和 unique_ptr区别?
- 18.内联函数和宏定义的区别?
- 19.简述几大基本排序?
- 20.快速排序最好和最坏的时间复杂度?
- 21.快速排序最坏情况如何改进?
- 22.struct与union的区别?
- 23.说说什么是内存对齐?
- 24.空类的sizeof大小是多少?
- 25.空类、含有虚函数的类、派生类、虚继承中的派生类、多重继承中的派生类等 的sizeof大小?
- 26.free()一个指针两次,会出现什么问题 ?
- 27.指针越界一定会出现错误吗 ?
- 28.C++四种类型转换符各自的作用?
- 29.浅拷贝是什么?深拷贝是什么?
- 30.简单介绍布隆过滤器?
- 31.hash表解决冲突的方法?
- 32.跳表插入删除过程?
- 33.新建一个空类,里面有什么函数?
- 34.怎么判断两个结构体变量是否相等?
- 35.可以使用static const成员函数吗?
- 36.volatile关键字的作用?
- 37.构造函数可以抛出异常吗?析构函数呢?
- 38.Float 和double在内存中的存储方法?
- 39.静态链接与动态链接?
- 40.为什么要有lambda表达式?
- 41.什么是std::move()以及什么时候使用它?
- 42.Static的用法?
- 43.Const的用法?
- 44.如果const成员函数想要改变成员变量怎么办?
- 45.左值和右值的区别?
- 46.说一说移动语义(move)和完美转发(forward)?
- 47.模板是什么?使用模板编程实现快排?
- 48.malloc底层原理?
- 49.C++如何调用C函数,C++和C混合编译?
- 50.c++如何判断内存是否泄露?
- 51.虚继承的实现原理?
- 52.placement new是什么?
- 53.inline函数优点、缺点?
- 54.explicit作用?
- 55.new可以用free释放吗?
- 56.new低层实现?
- 57.unique_ptr可以拷贝吗?
- 58.怎么使一个类不能继承?
- 59.对void*你了解什么?
- 60.静态链接、动态链接具体做了什么?
- 61.编译期间的错误、链接期间的错误?
- 62.什么叫全特化?偏特化呢?
- 63.一个模板类在不同特化之后,得到的类还是不是同一个类?
- 64.new一个对象背后发生了什么?
- 65.类和结构体的区别
- 66.C++ 指针常量、常量指针和常指针常量
- 67.数组与链表的区别
- 68.左值和右值
- 69.未初始化的全局变量放在下面哪个段中()
- 70.C/C++ 返回值、参数列表、缺省等区别
- 71.哈希表
- 72.c++的动态绑定和静态绑定
- 73.c++关于内存释放(栈与堆)
- 74.32位机器和64位机器的区别
- 75.c、c++变量在64位机器和32位机器的区别
- 76.多线程和多进程
- 77.extern声明
- 78.const引用与非const引用
- 79.break和continue的区别
- 80.如何分配和释放存储空间
- 81.虚函数与纯虚函数的区别
- 82.函数指针
- 83.函数指针和指针函数的区别
- 84.如何访问静态成员
- 85.虚函数的作用
- 86.什么时候发生覆盖
- 87.如何访问基类的成员
- 88.什么是内联函数
- 89.一个类可以访问另一个类的私有成员吗
- 90.函数重载时如何实现实参的类型转换
- 91.什么是泛型编程
- 92.什么是队列
- 92.什么是栈
- 93.二叉树的特性
- 94.指针和引用的区别
- 95.用C语言实现C++的继承
- 96.说说你对c和c++的看法,c和c++的区别?
- 97.c/c++的内存分配,详细说一下栈、堆、静态存储区?
- 98.野指针是什么?如何检测内存泄漏?
- 99.内存泄漏
- 100.delete p;与delete[]p,allocator
- 101.new和delete的实现原理, delete是如何知道释放内存的大小的额?
- 102.malloc申请的存储空间能用delete释放吗
- 103.malloc与free的实现原理?
- 104.内存对齐?位域?
- 104.函数调用过程栈的变化,返回值和参数变量哪个先入栈?
- 105.#include 的顺序以及尖括号和双引号的区别
- 106.lambda函数
- 107.模板类和模板函数的区别是什么?
- 108.C++中类成员的访问权限和继承权限问题。
- 109.cout和printf有什么区别?
- 110.定义和声明的区别
- 111.C++类型转换有四种
- 112.全局变量和static变量的区别
- 113.静态成员与普通成员的区别
- 114.说一下理解 ifdef endif
- 115.多继承的优缺点,作为一个开发者怎么看待多继承
- 116.智能指针的作用;
- 117.auto_ptr作用
- 118.class、union、struct的区别
- 119.动态联编与静态联编
- 120.动态编译与静态编译
- 121.动态链接和静态链接区别
- 122.volatile关键字的作用?
- 123.讲讲大端小端,如何检测(三种方法)
- 124.const char* 与string之间的关系,传递参数问题?
- 125.为什么拷贝构造函数必须传引用不能传值?
- 126. 空类的大小是多少?为什么?
- 127.静态函数能定义为虚函数吗?常函数?
- 128.this指针调用成员变量时,堆栈会发生什么变化?
- 129.静态绑定和动态绑定的介绍
- 130.类对象的大小
- 131.何时需要合成构造函数
- 132.何时需要合成复制构造函数
- 133.何时需要成员初始化列表?过程是什么?
- 134.程序员定义的析构函数被扩展的过程?
- 135.哪些函数不能是虚函数
- 136.sizeof 和strlen 的区别
- 137.编码实现某一变量某位清0或置1
- 138.局部变量全局变量的问题?
- 139.数组和指针的区别?
- 140.如何禁止自动生成拷贝构造函数?
- 141.虚函数与纯虚函数的区别在于
- 142.智能指针怎么用?智能指针出现循环引用怎么解决?
1.面向对象的特征?
抽象、封装、继承、多态。
2.一个C++源文件从文本到可执行文件经历的过程?
预处理阶段:对源代码文件中文件包含关系(头文件)、预编译语句(宏定义)进行分析和替换,生成预编译文件
编译阶段:将经过预处理后的预编译文件转换成特定汇编代码,生成汇编文件
汇编阶段:将编译阶段生成的汇编文件转化成机器码,生成可重定位目标文件
链接阶段:将多个目标文件及所需要的库连接成最终的可执行目标文件
3.new和malloc的区别?
1、new/delete是C++关键字,需要编译器支持。malloc/free是库函数,需要头文件支持;
2、使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据类型信息自行计算。而malloc则需要显式地指出所需内存的尺寸。
3、new操作符内存分配成功时,返回的是对象类型的指针,类型严格与对象匹配,无须进行类型转换,故new是符合类型安全性的操作符。而malloc内存分配成功则是返回void*,需要通过强制类型转换将void*指针转换成我们需要的类型。
4、new内存分配失败时,会抛出bac_alloc异常。malloc分配内存失败时返回NULL。
5、new会先调用operator new函数,申请足够的内存(通常底层使用malloc实现)。然后调用类型的构造函数,初始化成员变量,最后返回自定义类型指针。delete先调用析构函数,然后调用o