C++之虚函数

虚函数的实质和用途:如果不定义虚函数,基类和扩展类中不能有同名函数(名字,参数个数顺序类型都相同),否则会发生同名覆盖,此时想用基类指针去调用扩展类的对象是行不通的;但如果将基类的成员函数定时成虚函数,相当于允许扩展类中重新定义该同名函数执行不同的功能,此时就可以用基类的指针去指向扩展类,从而调用扩展类的成员函数,从而实现与用基类指针指向基类、调用基类同名函数不同的功能即实现了多态。

一个函数是否定义成虚函数的依据:1 虚函数所在的类有可能被派生类继承 2函数的功能在派生类中有可能改写3 通过基类指针调用派生类的对象。

系统只所以能区分基类指针调用的成员函数是基类的还是扩展类的,是因为在运行中根据基类指针指向的对象不同来识别的,内部会增加一个指针数组形式的指针数组(指向同名虚函数的入口地址),增加了一部分的开销。纯虚函数在基类中没有定义实体,只是建立一个框架,等待扩展类来实现。

猜你喜欢

转载自www.cnblogs.com/jieruishu/p/10128765.html