从面向对到面向COM.pptVIP

  • 2
  • 0
  • 约1.15万字
  • 约 77页
  • 2019-03-17 发布于浙江
  • 举报
从面向对象到面向COM 主讲 叶长青 华东师大教育信息技术学系 2006-3-1 丽娃河畔 ycq@deit.ecnu.edu.cn 程序的输出结果我们希望是I am circle 造成这个结果的原因是静态联编。 解释: 静态联编需要在编译时候就确定函数的实现,但事实上编译器在仅仅知道shape的地址时候无法获取正确的调用函数,它所知道的仅是shape::draw(),最终结果只能是draw操作束缚到shape类上。产生I am shape的结果就不足为奇了。 事实上却输出了“I am shape” 为了能够引起动态联编,我们只需要将需要动态联编的函数 声明为虚函数即可。动态联编只对虚函数起作用。我们在通过基类 而且只有通过基类访问派生类的时候,只要这个基类中直接的或者 间接(从上层继承)的包含虚函数,动态联编将自动唤醒。下面我 们将上面的程序稍微改一下。 #include iostream.h class shape{ public: virtual void draw(){coutI am shapeendl;} void fun(){draw();} }; class circle:public shape{ public: void draw(){coutI am circleendl;} }; ma

文档评论(0)

1亿VIP精品文档

相关文档