Skip to content

多态性和虚函数

  1. 多态性:The ability for a message/data to be processed in more than one form

  2. 虚函数主要用于实现运行时多态,解析是在运行时进行的

    运行时多态,要求虚函数必须通过指针或引用访问

  3. 虚函数保证了无论引用的类型是什么,都能调用正确的方法

    虚函数要定义成public的,不能是static

    必须在基类中声明和定义,在子类中重写

    子类中不需要redefine,virtual可加可不加

  4. 虚函数重写的时候,不获取默认参数的基类声明。即使调用了虚函数,对象的静态类型也决定了要使用的默认实参。

  5. 抽象类没有析构函数,不可以有实例

    抽象类可以有main()定义在里面

    抽象类可以有指针和引用

    如果有一个类继承自抽象类,那么它要么声明为抽象类,要么实现抽象方法

    抽象方法的实现要在编译时完成

  6. 抽象函数,不可以在基类中定义,只能在派生类中定义

  7. 如果成员函数是虚函数,它不可以有函数体,由子类实现

    析构函数可以是虚函数,构造函数不能是虚函数

  8. 在泛型类(generic class)中使用成员函数时,函数会自动转换成泛型,这是因为函数会用与定义相同的类型来使用泛型

  9. 奇奇怪怪:

    • 在编译时强制定义抽象函数的特性叫做:Dynamic polymorphism
    • 可以使用派生类的构造函数调用基类的方法
    • For overloading “( )”, “[ ]” or “->” operators, a class must be non-static member and should not be friend of class
  10. 当被重载的操作符左结合时,左操作数由*this表示,其他操作数由函数传参表示

    <<和>>如果重载,必须是友元函数的形式