程序员面试宝典笔记
目录 第十一章 接口与继承 1、覆盖 第十一章 接口与继承 1、覆盖 1 A* pa = new A(); 2 pa->foo(); 3 B* pb = (B*)pa; //此时pa仍然是指向A的类对象,因此pb也指向A的类对象 1 #include <iostream> 2 using namespace std; 3 4 class A 5 { 6 public: 7 void virtual foo() 8 { 9 cout << "A" << endl; 10 } 11 }; 12 class B :public A 13 { 14 public: 15 void virtual foo() //这里不加virtual也是可以的,只要基类中加派生类同名函数自动成为虚函数 16 { 17 cout << "B" << endl; 18 } 19 }; 20 int main() 21 { 22 A* pa = new A(); //创建指向A类对象的指针pa 23 pa->foo(); //由于pa是基类指针,所以执行基类A中的函数foo() 24 B* pb = (B*)pa; //将pa转换为B类型并创建B类型指针,最后将pa赋值给pb,但是pa仍然指向基类的类对象,所以pb也指向基类的类对象 25 pb->foo(); //执行基类A中的函数foo() 26