一个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没给出父类的信息