#include <iostream>
#include <stdio.h>
class Parent
{
public:
int ulPublic;
private:
int ulPrivate;
protected:
int ulProtect;
public:
Parent()
{
ulPublic = 1;
ulProtect = 2;
ulPrivate = 3;
}
};
class Child1_pub:public Parent
{
public:
int Getpub() {return ulPublic;}
int GetProtected(){return ulProtect;}
//int GetPrivate(){return ulPrivate;}// not access
};
class Child2_prd:protected Parent
{
public:
int Getpub(){return ulPublic;}
int GetProtected(){return ulProtect;}
//int GetPrivate(){return ulPrivate;} //not get
};
class Child3_prt:private Parent
{
public:
int Getpub(){return ulPublic;}
int GetProtected(){return ulProtect;}
//int GetPrivate(){return ulPrivate;} //not get
};
int main()
{
int a,b,c;
Parent test;
Child1_pub cd1;
Child2_prd cd2;
Child3_prt cd3;
//------------基于对象-----------------------------------------------
/*对于一个普通的类,其对象只能访问其public成员*/
a= test.ulPublic;
//b= test.ulProtect;// not get
//c=test.ulPrivate;// not geti
/*public派生类中,派生类对象可以只可以访问基类中的public成员*/
a = cd1.ulPublic;
//a= cd1.ulProtect;
//a= cd1.ulPrivate;
/*Protected派生类中,派生类对象只能不能访问基类所有的元素*/
//a = cd2.ulPublic;
//a= cd2.ulProtect;
//a=cd2.ulPrivate;
/*Private派生类中,派生类对象只能不能访问基类所有的元素*/
//a = cd3.ulPublic;
//a= cd3.ulProtect;
//a=cd3.ulPrivate;
//------------------------------------------------------------------
/*public派生类中,其成员函数可以访问public/protected成员*/
cd1.Getpub();
cd1.GetProtected();
/*protected派生类中,其成员函数可以访问public/protected成员*/
cd2.Getpub();
cd2.GetProtected();
/*private派生类中,其成员函数可以访问public/protected成员*/
cd3.Getpub();
cd3.GetProtected();
return 0;
}
1