1 #include <iostream> 2 using namespace std; 3 4 //多态调用依赖指针或者引用 5 //对象调用会调用拷贝构造,拷贝一个父类,无法实现多态 6 //如果要使用别继承的虚函数,不允许出现虚函数的重载 7 //多态可以跨类,爷爷辈的指针可以存储孙子辈的地址 8 9 class myclass 10 { 11 public: 12 virtual void go() 13 { 14 cout << "hello" << endl; 15 } 16 17 }; 18 19 class mynewclass :public myclass 20 { 21 public: 22 void go() 23 { 24 cout << "hello world" << endl; 25 } 26 }; 27 28 void test1(myclass &my) 29 { 30 my.go(); 31 } 32 33 //这样不会调用子类重载的函数 34 void test2(myclass my) 35 { 36 my.go(); 37 } 38 39 40 void main() 41 { 42 //mynewclass my1; 43 myclass *p = new mynewclass; 44 //p->go(); 45 //调用原生的函数 46 //p->myclass::go(); 47 48 test1(*p); 49 test2(*p); 50 cin.get(); 51 }