C++经典面试题库 附带参考答案(二)

2014-11-24 00:54:38 · 作者: · 浏览: 33
了子类的部分行为,父类的任何改变都可能影响子类的行为


3、如果继承下来的实现不适合解决新的问题,则父类必须重写或被其他更适合的类替换。这种依赖关系限制了灵活性并最终限制了复用性。



41. 解释堆和栈的区别。


答:栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。


堆(heap)一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。



42. 一个类的构造函数和析构函数什么时候被调用,是否需要手工调用


答:构造函数在创建类对象的时候被自动调用,析构函数在类对象生命期结束时,由系统自动调用。



43. 何时需要预编译:


答:总是使用不经常改动的大型代码体。


程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。



44. 多态的作用?


答:主要是两个:


1. 隐藏实现细节,使得代码能够模块化;扩展代码模块,实现代码重用;


2. 接口重用:为了类在继承和派生的时候,保证使用家族中任一类的实例的某一属性时的正确调用



45. 虚拟函数与普通成员函数的区别?内联函数和构造函数能否为虚拟函数?


答案:区别:虚拟函数有virtual关键字,有虚拟指针和虚函数表,虚拟指针就是虚拟函数的接口,而普通成员函数没有。内联函数和构造函数不能为虚拟函数。



46. 构造函数和析构函数的调用顺序 析构函数为什么要虚拟


答案:构造函数的调用顺序:基类构造函数—对象成员构造函数—派生类构造函数;析构函数的调用顺序与构造函数相反。析构函数虚拟是为了防止析构不彻底,造成内存的泄漏。



47. C++中类型为private的成员变量可以由哪些函数访问


答:只可以由本类中的成员函数和友元函数访问



48. 请说出类中privateprotectpublic三种访问限制类型的区别


答:private是私有类型,只有本类中的成员函数访问;protect是保护型的,本类和继承类可以访问;public是公有类型,任何类都可以访问.



49. 类中成员变量怎么进行初始化?


答:可以通过构造函数的初始化列表或构造函数的函数体实现。



50. 在什么时候需要使用常引用? 


答:如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用。