本文共 420 字,大约阅读时间需要 1 分钟。
一个函数在内存中的地址称为函数入口地址。多态就是指在运行时将函数名称动态绑定到函数入口地址的绑定机制。
c++多态的条件:
1.存在继承体系结构
2. 存在virtual关键字的同名成员函数
3. 用基类指针, 基类引用访问成员函数
基类指针可以指向派生类对象, 反之不行。
如果在基类中用了virtual关键字, 派生类即使不用virtual声明, 默认是virtual的
virtual不能用于顶层函数
构造函数不能是虚的, 而析构则一般是虚的(防止派生类成员不能释放),
只有非静态成员才能是虚的。
重载函数和虚函数的区别是前者为编译时绑定。
动态绑定是通过vtable
覆盖是指函数相同, 但未用virtual关键字。
假设基类A定义了x(), 派生类B也定义了x(), 要在通过B的对象b访问A的x(), 需如下方式调用:b.A.x().
纯虚函数用于定义抽象基类成员, 不能生成实例, 必须被派生类覆盖,在纯虚的地方让其等于0.
转载地址:http://ntrkb.baihongyu.com/