虚函数重载以及虚函数特色必须this指针

 1 /* 虚函数重载特色以及虚函数特点 */
 2 
 3 #include<iostream>
 4 
 5 using namespace std;
 6 
 7 class A
 8 {
 9 public:
10     // 虚函数靠this指针的转换来实现,必须是成员函数
11     // 虚函数不可以是外部函数  不可以是友元函数
12     // 没有this指针的函数不可以是虚函数
13     // 只有非静态成员函数有this指针才可以是虚函数
14     virtual void print1()
15     {
16         cout << "virtual void print1" << endl;
17     }
18 
19     virtual void print2()
20     {
21         cout << "virtual void print2" << endl;
22     }
23 
24     virtual void print3()
25     {
26         cout << "virtual void print3" << endl;
27     }
28 private:
29     int x;
30     int y;
31 
32 };
33 
34 
35 
36 class B:public A
37 {
38 public:
39     void print1()
40     {
41         cout << "void print1" << endl;
42     }
43 
44     void print2(int num)
45     {
46         cout << "void print2" << endl;
47     }
48     
49     /*
50     虚函数如果重写,参数相同  函数名相同
51     返回值不同会报错
52     int print3()
53     {
54         cout << "void print3" << endl
55         return 100;
56     }
57     */
58 };
59 
60 
61 
62 
63 virtual void run()// 不可以 虚函数只能是类成员函数
64 {
65 
66 }
67 
68 
69 /*
70     虚函数如果要实现覆盖生效:
71         1,函数名一致
72         2,参数一致
73         3,返回值一致
74     如果函数名一致参数不一致,虚函数特性丢失
75     如果函数名一致参数一致,返回值不一致会报错
76 */
77 
78 
79 void main()
80 {
81     A *p = new B;
82     p->print1();
83     p->print2();
84 
85     cin.get();
86 }

 

posted on 2015-06-10 10:29  Dragon-wuxl  阅读(207)  评论(0)    收藏  举报

导航