多态和虚函数习题与答案_课后习题答案.docVIP

  • 204
  • 0
  • 约1.21万字
  • 约 17页
  • 2017-05-19 发布于江西
  • 举报

多态和虚函数习题与答案_课后习题答案.doc

多态和虚函数习题与答案_课后习题答案

概念填空题 1.1 C++支持两种多态性,分别是 编译时 和 运行时 。 1.2在编译时就确定的函数调用称为 静态联编 ,它通过使用 函数重载,模板等 实现。 1.3在运行时才确定的函数调用称为 动态联编 ,它通过 虚函数 来实现。 1.4虚函数的声明方法是在函数原型前加上关键字 virtual 。在基类中含有虚函数,在派生类中的函数没有显式写出virtual关键字,系统依据以下规则判断派生类的这个函数是否是虚函数:该函数是否和基类的虚函数 同名 ;是否与基类的虚函数 参数个数相同、类型 ;是否与基类的虚函数 相同返回类型 。如果满足上述3个条件,派生类的函数就是 虚函数。并且该函数 覆盖 基类的虚函数。 1.5当通过 引用 或 指针 使用虚函数时,C++会在与对象关联的派生类中正确的选择重定义的函数。实现了 运行时 时多态。而通过 对象 使用虚函数时,不能实现运行时时多态。 1.6 纯虚函数是一种特别的虚函数,它没有函数的部分,也没有为函数的功能提供实现的代码,它的实现版本必须由给出,因此纯虚函数不能是。拥有纯虚函数的类就是类,不能。如果纯虚函数没有被重载,则派生类将继承此纯虚函数,即该派生类也是。虚函数虚函数虚函数当你动态申请一个对象时,并且把这个对象的指针赋值给基类,这时当你用这个基类指针释放内存时,就有用了,因为这样可以用多态性原理调用对象实际的析构函数来析构内存。using namespace std; class CPen { public: CPen(int weight) : m_weight(weight) { cout construct Cpen object.\n; } virtual ~CPen() { cout destruct CPen object\n; } //~CPen() //{ // cout destruct CPen object\n; //} void PrintWeight() const { cout weight = m_weight; } private: int m_weight; }; class CShape { public: int m_length; int m_thickness; int m_colour; }; class CPencil : public CPen { public: CPencil(int weight, int length, int thickness, int colour) : CPen(weight) { m_shapePtr = new CShape; m_shapePtr-m_length = length; m_shapePtr-m_thickness = thickness; m_shapePtr-m_colour = colour; //m_weight = weight; error cout construct CPencil object.\n; } ~CPencil() { cout destruct CPencil\n; delete m_shapePtr; } void ShowInfo() const { cout I am a pencil: ; PrintWeight(); cout length = m_shapePtr-m_length thickness = m_shapePtr-m_thickness colour = m_shapePtr-m_colour endl; } private: CShape *m_shapePtr; }; int _tmain(int argc, _TCHAR* argv[]) { CPen *penPtr = new CPencil(10, 11, 12

文档评论(0)

1亿VIP精品文档

相关文档