各种笔试面试经历小总结(1)

来源:互联网 发布:怎么找到淘宝卖家电话 编辑:程序博客网 时间:2024/05/22 14:21

    今天参加了一家IT公司的笔试,涉及到几个C++的问题,之前并没有搞太清楚,小总结一下。

问题一:关于c++的虚函数,引入虚函数的意义。

    我们知道,多态性是面向对象程序设计的重要特征,一般定义是:向不同对象发送同一消息,不同对象在接收到该消息时会有不同的处理方法。那么实现多态性有两种方式,一种是静态多态性,另一种是动态多态性。

    静态多态性是通过函数和运算符的重载来实现的,从编译器的角度看,它在程序编译时就知道调用函数的全部信息,在编译时系统就知道要调用哪个函数了,这种方式的速度快、效率高,但是缺乏一定灵活性。

    动态多态性 就是通过虚函数来实现,从编译器的角度来看,在编译时并不知道调用哪个函数,而是在程序运行过程中才动态地确定操作所针对的对象。利用虚函数,可以设计出易于功能拓展的系统。虚函数要使用virtual进行修饰,它一般在基类进行函数声明,在派生类中进行具体函数定义。

问题二:关于析构函数

    我们都知道析构函数一般在结束某个对象(假设为局部对象)的调用前调用它来释放资源,但是要注意几点:1、静态局部对象在函数调用结束时对象并不释放,因此不调用析构函数,只在main函数结束或调用exit函数结束程序时系统才调用静态局部对象的析构函数释放资源;2、如果定义的是一个全局对象,直到main函数结束和调用了exit函数时才调用其析构函数;3、当用new给对象分配资源,使用delete删除对象时,先要调用析构函数;4、构造函数可以重载,而析构函数不能重载,只能将其声明为虚函数来实现多态性,当派生类对象从内存中撤销时一般先调用派生类的析构函数,再调用基类的析构函数,但用new简历的临时对象并定义了一个指向该基类的指针变量,在使用delete撤销对象时,不执行派生类中的析构函数,而是只执行基类的析构函数,当将基类的析构函数声明为虚函数后,就可以执行派生类的析构函数了。

问题三:关于对象复制问题

    由于对象结构较为复杂,所以直接使用一般的赋值语句是无法实现复制的,可以有两种方法,一种是重载“=”操作符,使其具有直接复制对象功能,另一种是使用拷贝构造函数,拷贝构造函数声明方式:Box::Box(const Box&x){初始化语句}

问题四:使用ifstream流类定义一个对象打开文件时默认的打开方式

Ifstream myfile;

Myfile.open(“filename”);

Open函数由两个参数组成,第一个参数是指定的文件路径名,第二个参数是打开模式,系统默认按ios::in方式打开,即为隐含打开方式。


这次笔试还考了20几道数学逻辑题,主要是些小学初中奥赛的题,不过在短时间不一定能做对哦,还得好好练练数学逻辑和推理!