标题:关于指针类型强转,故意没分的,呵呵
取消只看楼主
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
结帖率:100%
 问题点数:0 回复次数:1 
关于指针类型强转,故意没分的,呵呵
程序代码:
#include "stdafx.h"
#include <iostream>

class A
{
public:
    A() {}
    virtual ~A() {}

public:
    virtual void Display() { std::cout << "A" << std::endl; }
};

class B : public A
{
public:
    B() : A() {}
    virtual ~B() {}

public:
    virtual void Display() { std::cout << "B" << std::endl; }
};

int main()
{
    B* b = new B();
    b->Display();

    UINT32 p = (UINT32)b;
    A* a = (A*)p;
    a->Display();

    char ch;
    std::cin >> ch;
}


我以为会是BA,结果输出是BB
我大概模模糊糊知道为什么,求专家详解


[ 本帖最后由 peach5460 于 2013-4-8 21:36 编辑 ]
2013-04-08 21:34
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
得分:0 
以下是引用yuccn在2013-4-8 23:12:55的发言:

呵呵,如果输出是BA,那么 c++的多态性就完全没有意义了。自己慢慢理解咯

“回复 3楼 yuccn
请问为什么  UINT32的强转会没有效果的? ”

你说的没有效果是什么意思?
UINT32 p = (UINT32)b;
      A* a = (A*)p
其实不就是地址的间接传递嘛,

其实我试了一下,大致知道是什么原理了,以前对指针的理解太肤浅了,呵呵
不过我现在很感兴趣指针把他的类型放在哪在

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-04-09 08:03



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




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

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