虚函数使得程序在运行的时候根据指针指向对象的类型来确定调用哪个函数。
下图中:都为静态绑定。因为在编译器就确定了可以调用的函数
此时当基类指针指向派生类对象时,因为没有virtual关键字,所以在编译阶段就根据指针类型确定了要指向的函数。所以最后都将调用基类的speak函数
而在基类中的speak函数中加入virtual,在编译阶段,当看到virtual关键字时不再立刻进行绑定,而是在运行阶段根据对象所指的类型来确定调用哪个函数,加入virtual关键字后子类调用结果都为重写后的结果。
虚函数使得程序在运行的时候根据指针指向对象的类型来确定调用哪个函数。
下图中:都为静态绑定。因为在编译器就确定了可以调用的函数
此时当基类指针指向派生类对象时,因为没有virtual关键字,所以在编译阶段就根据指针类型确定了要指向的函数。所以最后都将调用基类的speak函数
而在基类中的speak函数中加入virtual,在编译阶段,当看到virtual关键字时不再立刻进行绑定,而是在运行阶段根据对象所指的类型来确定调用哪个函数,加入virtual关键字后子类调用结果都为重写后的结果。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/711826.html
如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!