私有继承、保护继承、公共继承之间的区别(代码形式)

  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 }

 

posted @ 2014-04-18 10:45  johnny_HITWH  阅读(470)  评论(0编辑  收藏  举报