1 // Inheritance.cpp : 定义控制台应用程序的入口点。
2 //
3
4 #include "stdafx.h"
5 #include <iostream>
6
7 using namespace std;
8
9 class Parent
10 {
11 public:
12 Parent(int var = 1)
13 {
14 pub = var;
15 ptd = var;
16 prt = var;
17 }
18 public:
19 int pub;
20 protected:
21 int ptd;
22 private:
23 int prt;
24 };
25 class child1:public Parent
26 {
27 public:
28 int getPub()
29 {
30 return pub;
31 }
32 int getPtd()
33 {
34 return ptd;
35 }
36 /* //错误。不管什么继承,子类不能访问父类的private成员变量,但可以访问protected和public成员变量。
37 int getPrt()
38 {
39 return prt;
40 }
41 */
42 };
43 class child2:protected Parent
44 {
45 public:
46 int getPub()
47 {
48 return pub;
49 }
50 int getPtd()
51 {
52 return ptd;
53 }
54 /* //错误。不管什么继承,子类不能访问父类的private成员变量,但可以访问protected和public成员变量。
55 int getPrt()
56 {
57 return prt;
58 }
59 */
60 };
61 class child3:private Parent
62 {
63 public:
64 int getPub()
65 {
66 return pub;
67 }
68 int getPtd()
69 {
70 return ptd;
71 }
72 /* //错误。不管什么继承,子类不能访问父类的private成员变量,但可以访问protected和public成员变量。
73 int getPrt()
74 {
75 return prt;
76 }
77 */
78 };
79
80 int _tmain(int argc, _TCHAR* argv[])
81 {
82
83 child1 ch1;
84 child2 ch2;
85 child3 ch3;
86 int var = 0;
87 ch1.pub = var;
88 //ch1.ptd = var; //错误。父类的保护成员变量、私有成员不能够被
89 //var = ch1.ptd; //以任何形式继承的子类的任何对象访问和修改
90 var = ch1.getPtd();
91
92 //var = ch2.pub; //错误。保护继承将父类的中的public和protected成员都变成子类protected类型的成员变量,而一个类的对象是无法访问
93 //ch2.pub = var; //错误。该类的protected和private成员变量的,所以一个保护继承子类的对象是无法访问和修改父类中public的成员变量的。
94 var = ch2.getPtd();
95
96 //ch3.Pub() = var;//错误。私有继承将父类中的成员变量全部变成子类中private类型的,此时子类对象当然不能修改和访问这些私有成员变量。
97 var = ch3.getPtd();
98
99 return 0;
100 }