| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1471 人关注过本帖
标题:有关类中的函数覆盖和多态(阿里云笔试题)
只看楼主 加入收藏
wlhdhn
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2009-11-18
结帖率:50%
收藏
已结贴  问题点数:19 回复次数:4 
有关类中的函数覆盖和多态(阿里云笔试题)
class BaseClass
{
public:
void myfun1()
{
myfun2();
cout<<"1"<<endl;
}
virtual void myfun2()
{
cout<<"2"<<endl;
}
};
class ExtClass:public BaseClass
{
public:
void myfun1()
{
myfun2();
cout<<"4"<<endl;
}
void myfun2()
{
cout<<"5"<<endl;
}
};
void myfunx(BaseClass *h)
{
h->myfun1();
h->myfun2();
}

int main(int argc,char *argv[])
{
  ExtClass h;
  h.myfun1();
  h.myfun2();
  cout<<"---"<<endl;
  myfunx(&h);
  return 0;
}
输出运行结果
运行后得到:
5
4
5
---
5
1
5
疑问是:myfun2实现了多态,用基类指针指向时,执行派生类的程序段,而myfun1没有实现多态,虽然是用基类指针指向派生类,但它仍指向基类的myfun1的程序段,可是在基类的myfun1中调用myfun2函数,怎么可能是执行了派生类的myfun2呢?
请各位指教!谢谢
搜索更多相关主题的帖子: 阿里云 
2011-09-18 14:18
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:19 
这不正是多态的表现吗,要调用哪个函数永远都是根据他的实际类型来判断的,你传一个drived class的指针,调用的肯定是drived类得函数了。

离恨恰如春草,更行更远还生。
2011-09-18 21:48
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:0 
另外LZ是不是在csdn也问过阿里云笔试题,你的上个题在今天在csdn就出现了,同一个人?

离恨恰如春草,更行更远还生。
2011-09-18 21:49
wlhdhn
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2009-11-18
收藏
得分:0 
关于编译环境为小端字节序的赋值问题
struct T_s1
    {
        char a;
        short b;
        char c;
    };
    union T_s2
    {
        int a;
        T_s1 b;
    };
    T_s2 s;
    s.a=0x11223344;
    cout<<hex<<s.b.a<<endl
        <<hex<<s.b.b<<endl
        <<hex<<s.b.c<<endl;

我在VC++6.0环境下的运行结果是:
                              D
                              1122
请问s.b.a的值为何是D?还有就是s.b.c为何没有值输出?
百思不得其解啊?
请大牛指点!!谢谢!!
2011-10-16 20:53
心灵百合
Rank: 5Rank: 5
等 级:职业侠客
帖 子:215
专家分:367
注 册:2011-3-30
收藏
得分:0 
这好像是java吧
2011-10-18 09:37
快速回复:有关类中的函数覆盖和多态(阿里云笔试题)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025747 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved