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

一个c++指针多态性的有关问题

2012-03-21 
一个c++指针多态性的问题classDisplayEx:publicDisplay{public:intShowIt(intnum){printf( ItisInteger,v

一个c++指针多态性的问题
class   DisplayEx:   public   Display  
{  
    public:  
    int   ShowIt(int   num)   {printf( "It   is   Integer,   value   is   %d\n ",   num);   return   0;}  
    int   ShowIt(const   char*   str)   {printf( "%s\n ",   str);   return   0;}  
};  

int   main()  
{  
DisplayEx   dpex;    
Display   *p_base=&dpex;    

p_base-> ShowIt(168);  
p_base-> ShowIt(1.68)
程序应该输出什么呢?为什么?

[解决办法]
没有多态 ······
[解决办法]
多态两个条件:
1 virtual属性,存在vtable, 这个没有满足
2 指针形式访问,这个满足了~
[解决办法]
int ShowIt(int num) {printf( "It is Integer, value is %d\n ", num); return 0;}
int ShowIt(const char* str) {printf( "%s\n ", str); return 0;}

p_base-> ShowIt(168);
p_base-> ShowIt(1.68)
根据函数精确度比较,
匹配的都是第一个,int ShowIt(int num)
[解决办法]
其实lz没给出父类的信息

热点排行