C++ 消息(成员函数调用)的动态绑定

1. 消息的多态性

    C++把类看作类型,把以public方式(严格讲:只有public方式)继承的派生类看做基类的子类型,这样就使得在C++面向对象程序中存在下面的三种多态:

    1)对象类型的多态:派生类对象的类型既可以是派生类,也可以是基类。

    2)对象标志的多态:基类的指针或引用可以指向或引用基类对象,也可以指向或引用派生类对象。(但是派生类的指针只能指向或引用派生类对象,不能指向或引用基类对象,可以理解为可以将多的给少的,但是不能把少的给多的。)

    3)消息的多态,一个可以发送到基类对象的消息,也可以发送到派生类对象。


2. 静态绑定

    在编译时刻绑定数据的类型。(默认)


3. 动态绑定

    在运行的时候绑定数据的类型。

class A
{
    int x,y;
  public:
    void f();
}

class B: public A
{
    int z;
  public:
    void f();
    void g();
}

void func1(A& x)
{
    x.f();//调用A::f,因为C++是静态绑定
}

void func2(A* p)
{
    p->f();//调用A::f,因为C++是静态绑定
}

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值