| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 935 人关注过本帖
标题:关于基类和派生类指针问题
只看楼主 加入收藏
hziee
Rank: 4
等 级:业余侠客
帖 子:64
专家分:257
注 册:2010-3-12
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
关于基类和派生类指针问题
编译器如何识别一个指向基类的指针实际指向派生类?
搜索更多相关主题的帖子: 指针 派生类 基类 
2010-03-12 18:46
quietstar
Rank: 2
来 自:虚无缥缈处
等 级:论坛游民
帖 子:28
专家分:98
注 册:2009-4-13
收藏
得分:7 
你的提法不正确:识别一个指向基类的指针实际指向派生类,并不是由编译器完成的,而是程序在运行时完成的。
这个正是C++的多态性了!例如:
#include <iostream>

using namespace std;

class Base
{
public:
    virtual void Print();
};

class Extend : public Base
{
public:
    void Print();
};

void Base::Print()
{
    cout<<"I'm Base"<<endl;
}

void Extend::Print()
{
    cout<<"I'm Extend"<<endl;
}

int main()
{
    Base *p = new Extend();
    p->Print();
    return 0;
}
上面例子中通过声明Print函数为虚函数,在程序运行时建立一个Base类的虚函数表,程序就是根据这张虚函数表来实现多态的。至于具体的实现细节,就涉及很多C++语言知识,建议参考一下C++权威书籍,我并非C++高手,在这里就不要误导你了。简单来说,就是基类指针在运行中,根据实际指向的对象调用相应对象的成员函数,这就是c++的多态性的体现了。


[ 本帖最后由 quietstar 于 2010-3-12 20:53 编辑 ]

流光穆然去,美梦随佳人。薄雾似成雨,芳樽清茶冷。郁郁清风外,悠然不复生。
2010-03-12 20:43
succubus
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:635
专家分:1080
注 册:2007-10-7
收藏
得分:7 
2楼说的不错
我就不废话了。。。

[url=http:///view/aDU1]/image/aDU1.gif" border="0" />[/url]
2010-03-15 09:11
mengyingyida
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-3-17
收藏
得分:0 
恩,,赞同
2010-03-17 11:13
快速回复:关于基类和派生类指针问题
数据加载中...
 
   



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

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