C++虚函数
1、在基类中将派生类会重新定义的方法声明为虚方法,基类用virtual声明成员函数为虚函数,=0表示该函数为纯虚函数
2、纯虚函数的类不能创建对象,这种类称为抽象类。
3、在编译过程中进行联编称为静态联编,在运行时编译的方法称为动态联编。C++中虚函数就是动态联编。静态联编的效率更高,但虚函数在运行之前不知道类型是什么,不知道哪个虚函数,所以为动态联编,如下b->View()调用的是BrassPlus中的方法。
class Brass {
public:
virtual void View() const;
}
class BrassPlus:public Brass{
public:
virtual void View() const;
}
BrassPlus a;
Brass *b;
b=&a;
b->View();
3 、b是一个基类指针,但是可以调用同一类族中不同类的虚函数,这就是虚函数多态性
4,虚函数的存储方式:每个类编译器都创建一个虚函数地址标,函数调用时埋在这个表中找到函数地址
5、一般将基类的析构函数定义为虚函数,析构时先析构派生类,在析构基类。
6、override可以避免派生类中忘记重写虚函数的错误,在派生类申明中加上override,如果没有被重写,编译器会报错。
class BrassPlus:public Brass{
public:
virtual void View() const override;
}