首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

动态联编有关问题分许

2012-03-03 
动态联编问题分许所有的函数都是虚函数下面两种写法调用的结果不同高手来分析分析A*pa(A*)newB()pa- Fo

动态联编问题分许
所有的函数都是虚函数
下面两种写法调用的结果不同   高手来分析分析

A*   pa=(A*)new   B();
  pa-> Foo();                 //调用子类   但参数是父类默认参数
  pa-> f(2.0);                

  B*   pb=new   B();
  A*   pa2=pb;  
  pb-> Foo();                     //调用子类方法   但入参是子类的默认参数
  pb-> f(2.0)

[解决办法]
······
楼主再回顾一下 多态的特性 ~
[解决办法]
默认参数没有多态性。
另外,从设计上霁,子类应该尊重父类接口,不要乱改虚函数的默认参数。
[解决办法]
默认参数的值是依赖于指针静态类型的,也就是出于效率考虑,默认参数没有多态特性
A* pa=(A*)new B(); // 所有以pa-> 形式调用的函数,默认参数都是class A里面的
B* pb=new B(); // 所有以pb-> 形式调用的函数,默认参数都是class B里面的

< <Effective C++> > 和 < <More Effective C++> > 是不错的书

热点排行