标题:基类指针转换成子类指针后
取消只看楼主
gz81
Rank: 5Rank: 5
等 级:职业侠客
帖 子:137
专家分:369
注 册:2008-5-1
结帖率:100%
已结贴  问题点数:20 回复次数:0 
基类指针转换成子类指针后
#include <iostream>

using namespace std;

class A {
public:
    virtual void fun0() {
        cout << "A::fun0 (virtual)" << endl;
    }
        void fun1() {
        cout << "A::fun1" << endl;
    }
        void fun2() {
        cout << "A::fun2" << endl;
    }

};
class B : public A {
public:

    void fun0() {
        cout << "B::fun0 (virtual)" << endl;
    }
    void fun1() {
        cout << "B::fun1" << endl;  
    }
        void fun3() {
        cout << "B::fun3" << endl;
    }

};

int main() {
    A *pa=new A;
    B *pb=(B*)pa;

    pb->fun0();
    pb->fun1();
    pb->fun2();
    pb->fun3();
    
    return 0;
}

以下是打印结果,哪位朋友可详细解释一下是为什么?主要是第一个不明白为什么输出的不是B::fun0 (virtual)
A::fun0 (virtual)  
B::fun1
A::fun2
B::fun3

[[it] 本帖最后由 gz81 于 2009-7-30 07:33 编辑 [/it]]
搜索更多相关主题的帖子: 子类 指针 基类 
2009-07-30 07:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-280994-1-1.html




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

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