每个类有一张虚函数表,每个类对象有一个虚表指针。
因为基类和子类都有虚表指针,所以当基类指针指向子类对象的时候,可以调用子类的虚函数,体现了多态性。
动态绑定:虚函数
静态绑定:非虚函数
析构函数一般写成虚函数的原因,这样当基类指针指向子类对象的时候,可以正确的调用子类的析构函数,正确的释放子类对象的资源。
构造函数一般不写成虚函数的原因,因为调用构造函数时对象还未被创建,也就没有虚表指针,更别提找到虚函数地址了。
欢迎分享,转载请注明来源:内存溢出
每个类有一张虚函数表,每个类对象有一个虚表指针。
因为基类和子类都有虚表指针,所以当基类指针指向子类对象的时候,可以调用子类的虚函数,体现了多态性。
动态绑定:虚函数
静态绑定:非虚函数
析构函数一般写成虚函数的原因,这样当基类指针指向子类对象的时候,可以正确的调用子类的析构函数,正确的释放子类对象的资源。
构造函数一般不写成虚函数的原因,因为调用构造函数时对象还未被创建,也就没有虚表指针,更别提找到虚函数地址了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)