Chinaunix首页 | 论坛 | 博客
  • 博客访问: 28024
  • 博文数量: 8
  • 博客积分: 2099
  • 博客等级: 大尉
  • 技术积分: 85
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-04 14:23
文章分类

全部博文(8)

文章存档

2010年(4)

2009年(4)

我的朋友

分类: C/C++

2009-06-21 10:29:34

 
指向继承类的基类指针解引用后,是否还具备多态性
 
class Base
{
public:
    int a;
    virtual void fun() { cout << "Base" << endl; }
};
 
class Extend : public Base
{
public:
    int b;
    virtual void fun() { cout << "Extend" << endl; }
};
 
int main()
{
    Base *pb;
    Extend ex;
    pb = &ex;
 
    pb->fun();
    (*pb).fun();
    cout<
}
 
测试结果:具备多态性。
 
如果将这个指针指向的对象赋给基类对象,基类对象并不会变成多态语意,看来C++挺神奇的:
Base b=(*pb);
b.fun();     //invoke Base::fun()
 
 
阅读(976) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

maxxfire2009-06-29 03:15:37

楼上大侠,呵呵,这种切片好像不是简单的切蛋糕那样切。。 所以觉得神奇。。

fera2009-06-24 09:44:04

(*pb).fun();等价于pb->fun(); Base b=(*pb);这里调用Base的default copy ctor,发生切片了。 神奇啥啊,先搞明白基础吧