C++_练习—多态_virtual

梦想与她 提交于 2019-11-27 21:39:43

多态_virtual


 /* 父类指针定义对象,当基类与派生类存在相同成员函数,编译器设置为基类中的版本,

    为静态多态/静态链接/早绑定:函数调用在程序执行前就准备好了!
    在父类相同函数前加 virtual 则编译器看指针的内容,而不是类型!

子类定义对象,当基类与派生类存在相同成员函数,调用子类!

父类定义对象,当基类与派生类存在相同成员函数,调用父类!
*/

 

 1 /* 父类指针定义对象,当基类与派生类存在相同成员函数,编译器设置为基类中的版本,
 2    为静态多态/静态链接/早绑定:函数调用在程序执行前就准备好了!
 3    在父类相同函数前加 virtual 则编译器看指针的内容,而不是类型!
 4 
 5    子类定义对象,当基类与派生类存在相同成员函数,调用子类!    父类定义对象,当基类与派生类存在相同成员函数,调用父类!
 6 */
 7 
 8 #include <iostream>
 9 
10 using namespace std;
11 
12 class parent {
13 public:
14     parent(int age) {
15         this->age = age;
16     }
17 
18      void pri(void) {
19         cout << "parent =  " << age << endl;
20     }
21 
22 private:
23     int age;
24 };
25 
26 class child : public parent{
27 public:
28     child(int num):parent(6){
29         this->num = num;
30     }
31 
32      void pri(void) {
33         cout << "child =  " << num << endl;
34     }
35 
36 private:
37     int num;
38 };
39 
40 int main(void)
41 {
42 
43 //方式一:
44 
45     cout << "—— 方式一 ——" << endl;
46 
47     parent paren(10);
48     paren.pri();  // 此时调用parent类中的pri(看this指针)
49 
50     child chi(11);
51     chi.pri();    // 子类定义对象,当基类与派生类存在相同成员函数,调用子类!(看this指针)
52     //chi.parent::pri();  // 调用父类中pri
53 
54 
55 //方式二:
56 
57     cout << "—— 方式二 ——" << endl;
58 
59     child *c = &chi;
60     c->pri();   // 子类成员函数(看this指针)
61 
62 
63 //方式三:
64 
65     cout << "—— 方式三 ——" << endl;
66 
67     parent& b1 = paren;
68     parent& b2 = chi;
69 
70     b1.pri();   // 父类成员函数
71     b2.pri();   //(加virtual看指针,不加则编译器设置为父类中的版本)
72 
73     system("pause");
74 
75     return 0;
76 }

 

 

笔记


 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!