多态,父类指针指向子类对象,现在的代码能被未来复用

it2022-07-03  131

多态的三个条件

虚函数,重写,继承

#include <iostream> using namespace std; class Parent { public: Parent(int a = 0) { this->a = a; } virtual void print() { cout<<"father"<<endl; } private: int a; }; class Child : public Parent { public: Child(int a = 0, int b = 0):Parent(a) { this->b = b; } void print() { cout<<"son"<<endl; } private: int b; }; void HowToPlay(Parent *base) { base->print();//会有多态发生 } int main(int argc,char ** argv) { Parent p1; Child c1; HowToPlay(&p1); HowToPlay(&c1); return 0; }

C++编译器根本不需要区分是子类对象还是父类对象,他就是区分,这个函数是不是虚函数. 不管是父类对象还是子类对象,分别有vptr指针,根据vptr指针去找虚函数表,根据虚函数表去找函数的入口地址. 实现了一个迟绑定的效果,运行的时候编译器才去判断


最新回复(0)