c++ 虚函数
2021-06-07 03:04
标签:rgb 类方法 动作 strong 重新定义 out 多态 有关 基本 如果用基类指针指向一个衍生类对象,透过基类指针只能调用基类所定义的成员函数。 要实现透过基类指针调用子类成员函数(多态),需要使用 virtual 关键字。 MFC 有两个十分十分重要的虚 拟函数:与document 有关的Serialize 函数和与view 有关的OnDraw 函数 c++的虚函数,编译器无法在编译时期判断到底调用哪一个函数,必须在执行时才能评估,这称为后期绑定(lata binding)或动态绑定(dynamic binding)。 c++的non-virtual函数,在编译时期就转换成一个固定地址的调用,这称为前期绑定(early binging)或静态绑定(static binding). (这与我之前看的java虚拟机里java多态的实现基本一致。) 有时基类的虚方法本不该被调用,只是为了实现基类指针调用子类方法。 纯虚函数是最好的。 纯虚拟函数不需定义其实际动作,它的存在只是为了在衍生类别中被重新定义,只是为 了提供一个多态接口。 只要是拥有纯虚拟函数的类,就是抽象类。不能实例化。 如果子类没有修改基类的纯虚拟函数,那么子类也是一个拥有纯虚函数的类(抽象类)。 c++ 虚函数 标签:rgb 类方法 动作 strong 重新定义 out 多态 有关 基本 原文地址:https://www.cnblogs.com/shanshan11/p/14591928.html虚函数
动态绑定与静态绑定
基类定义虚函数
// 1 空函数,定义后什么也不做
class CShape
{
public:
virtual void display() { }
};
// 2 无用的消息
class CShape
{
public:
virtual void display() { cout "Shape \n"; }
};
// 3 纯虚函数
class CShape
{
public:
virtual void display() = 0; // 注意"= 0"
};
纯虚函数
上一篇:javaweb-servlet
下一篇:多线程