首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 大家帮忙~~ [已结贴,结贴人:wzlsy]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wzlsy
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-05-16 09:55:04 楼主
    #include <iostream>
    using namespace std;
    class A
    {
    public:
    A();
        virtual void Classprint();

    };
    A::A()
    {
    this->Classprint();
    }
    void A::Classprint()
    {
    cout < < "my A" < < endl;
    }
    class B:public A
    {
    public:
    B();
    void Classprint();
    };
    B::B()
    {
    }
    void B::Classprint()
    {
    cout < < "my B" < < endl;
    }


    B b;
    int main()
    {
    return 0;
    }

    结果输出 "my A"

    请问 在构造B类的时候 在A类的构造函数里的this指向的是B的对象 根据多态性的原理 应该输出"my B"啊 为什么输出的是 "my A"? 谢谢~
    10  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wzlsy
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-16 10:21:361楼 得分:0
    没人帮我啊...........
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hanggen
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-21 01:54:102楼 得分:0
    构造函数没有对象的传递,只是函数的调用并没有传递对象的指针。
    如果存在了对象的地址或指针的传递才可能调用。
    以下应该可以输出"my A" 和"my B"
    void f(A a)
    {
    a.classprint();
    }

    int main()
    {
    B b;
    f(b);

    return 0;
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hdt
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-21 08:16:143楼 得分:10
    当然是A
    因为那个时候B并没有构造好
    他的虚函数表还是A的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ws_hgo
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-21 14:30:274楼 得分:0
    学习
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved