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

本文介绍了C++中消息的多态性,包括对象类型的多态、对象标志的多态和消息的多态。重点讲解了动态绑定的概念,并探讨了虚函数的定义和作用,强调虚函数在实现消息动态绑定中的关键角色。同时指出,虚函数只能是类的成员函数,静态成员函数和构造函数不能为虚,而析构函数可以是虚的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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++是静态绑定
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值