虚函数重载以及虚函数特色必须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) 收藏 举报
浙公网安备 33010602011771号