Untitled Document

二、问答题
1、 虚析构函数有什么作用？
解答要点：
对象销毁时，需要调用析构函数。在多态调用时，是用基类的指针访问派生类的对象。如果析构函数是非虚函数，则基类指针只能访问基类的析构函数，而不能访问派生类的析构函数，导致派生类对象销毁时，没有调用派生类的析构函数，只是调用了基类的析构函数。如果把析构函数定义成虚函数，则可克服这个问题。
2、 拷贝构造函数在哪几种情况下调用？
解答要点：
用一个对象初始化另一个对象时
当用对象作为函数参数传递时
当函数返回对象时
3、 函数重载与函数覆盖有什么不同，它们与多态有什么关系？
解答要点：
函数重载是指函数名相同，而函数的参数个数或类型不同；覆盖是指在派生类中成员函数与基类成员函数的函数名、参数个数、类型与返回值均相同；C++中正是通过虚函数的覆盖，实现多态的功能。
4、 C++继承是如何工作的？
解答要点：
继承使得派生类能够使用基类的公有和保护成员，从而实现代码的复用，派生类可以增加成员，也可以隐藏和覆盖基类的成员。对于公有继承，基类成员的访问权限在派生类保持不变。
5、 类与对象有什么区别？
解答要点：
类是类型，是对象的抽象，对象是类的具体实例。一个类可以有多个对象，每个对象都有自己的存储单元，而类不占存储单元。