现在的位置: 首页 > 综合 > 正文

程序员面试

2018年04月17日 ⁄ 综合 ⁄ 共 857字 ⁄ 字号 评论关闭

1.内联函数和宏的差别

内联函数要做参数类型检查,这是内联函数和宏相比的优势

2.指针和引用的区别

1>.非空区别。一个引用不能指向空值,必须指向一个对象。指针可以为空。

2>.合法性区别。使用引用不用检测其合法性,但指针必须先检查是否合法。

3>.可修改区别。指针在初始化之后还可以修改其指向的内容,但是引用在初始化指向的对象后将不能改变,但是对象内容可以改变。

3.C++中有了malloc/free,为什么还有new/delete?

对于非内部数据类型的对象而言,malloc/free不能满足动态对象的需求,因为对象在创建时要执行构造函数,消亡时调用析构函数,这些都是malloc无法满足的。new和delete可以满足并实现对象的要求。malloc和free是库函数,而new和delete是运算符。

4.句柄和指针的区别和联系

句柄是一个指向指针的指针。windows是一个以虚拟内存为基础的操作系统。Windows内存管理器中的对象经常会变换地址。

Windows使用句柄标记系统资源,隐藏系统信息,是个32bit的uint。指针标记某个物理内存地址,两者是截然不同的概念。

5.简要介绍一下STL和包容器

STL 是标准模版库,现已成为C++的标准配置,它是一个基于模版的容器类库,包括链表,列表,队列和堆栈,包含许多常用的算法,如查找,排序等,其目的是提供对常用需求重新开发的一种替代方法。

包容器是包容其他对象的对象。可以帮助程序员处理常用的任务。

6. 面向对象技术的基本概念

对象,类和继承

7. C++的空类默认产生哪些类成员函数?

默认构造函数,析构函数,拷贝构造函数,赋值函数

8. 哪一种成员变量可以在同一个类的实例之间共享

静态成员变量

9. 为什么析构函数可以为虚函数,构造函数不能为虚函数?

虚函数采用虚调用的方法,虚调用允许调用一个只知道接口而不知道具体对象类型的函数,但是如果要构造一个对象,就必须知道对象的准确类型,所以构造函数不能为虚函数。

10. 虚函数的代价

虚函数的对象必须维护一个V表,因此在使用虚函数时会产生系统开销

抱歉!评论已关闭.