多态性和虚函数

来源:互联网 发布:js 键值对动态赋值 编辑:程序博客网 时间:2024/05/19 18:13

1  向上类型转换

取一个对象的地址并将其作为基类的对象来使用


2 捆绑

函数体和函数调用相联系称为捆绑

遭捆绑:在程序运行之前

晚捆绑:在程序运行时

3  虚函数

为了引起晚捆绑,需要在基类使用vitual修饰函数

4 c++如何实现晚捆绑

VTABLE

编译器放置特定的虚函数地址

在每个虚函数类中,编译器秘密的放置一个指针。

指向这个vtable

5抽象基类和纯虚函数

基类只作为一个接口。

纯虚函数:基类至少加入一个纯虚函数

当继承一个抽象类时,必须实现所有的纯虚函数否则继承的类也会是一个纯虚函数

6RTT1 运行时类型辨认

7 对象切片

传值

8 重载和重定义

重新定义一个基类的重载函数会隐藏多有该函数的其他基类版本

1 不许改变重载函数的返回值

2  可以改变返回指针和引用


9 虚函数

Vptr和vtable

设置vptr是构造函数的工作。

预处理器没有访问和类的概念

10 构造函数的调用次序

1 确保兑现被正确的建立

2 派生类只访问自己的成员,不访问基类成员

11 虚函数的调用发生在程序运行时

这时编译器不知道这个对象属于这个成员函数属于的类别

虚机制在构造函数中不起作用

12 构造函数调用时只知道构造函数所属的类。完全不知道这个类属于其他的类别

13 构造函数被调用后才有vtable

14 析构函数可以为虚函数

自最晚派生的类开始,并像上的基类

15 纯虚析构函数

必须为纯虚析构函数提供一个函数体

16 析构函数的虚机制

17 创建基于对象的继承

单根继承

18 运算符重载

19 向下类型转换

dynamic_cast 显示转换

安全类型转换

20 返回正确的地址,错误的话返回0


原创粉丝点击