多态性和虚函数
-
多态性:The ability for a message/data to be processed in more than one form
-
虚函数主要用于实现运行时多态,解析是在运行时进行的
运行时多态,要求虚函数必须通过指针或引用访问
-
虚函数保证了无论引用的类型是什么,都能调用正确的方法
虚函数要定义成public的,不能是static
必须在基类中声明和定义,在子类中重写
子类中不需要redefine,virtual可加可不加
-
虚函数重写的时候,不获取默认参数的基类声明。即使调用了虚函数,对象的静态类型也决定了要使用的默认实参。
-
抽象类没有析构函数,不可以有实例
抽象类可以有main()定义在里面
抽象类可以有指针和引用
如果有一个类继承自抽象类,那么它要么声明为抽象类,要么实现抽象方法
抽象方法的实现要在编译时完成
-
抽象函数,不可以在基类中定义,只能在派生类中定义
-
如果成员函数是虚函数,它不可以有函数体,由子类实现
析构函数可以是虚函数,构造函数不能是虚函数
-
在泛型类(generic class)中使用成员函数时,函数会自动转换成泛型,这是因为函数会用与定义相同的类型来使用泛型
-
奇奇怪怪:
- 在编译时强制定义抽象函数的特性叫做:Dynamic polymorphism
- 可以使用派生类的构造函数调用基类的方法
- For overloading “( )”, “[ ]” or “->” operators, a class must be non-static member and should not be friend of class
-
当被重载的操作符左结合时,左操作数由*this表示,其他操作数由函数传参表示
<<和>>如果重载,必须是友元函数的形式