// Inheritance.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
class Parent
{
public:
Parent(int var = 1)
{
pub = var;
ptd = var;
prt = var;
}
public:
int pub;
protected:
int ptd;
private:
int prt;
};
class child1:public Parent
{
public:
int getPub()
{
return pub;
}
int getPtd()
{
return ptd;
}
/* //错误。不管什么继承,子类不能访问父类的private成员变量,但可以访问protected和public成员变量。
int getPrt()
{
return prt;
}
*/
};
class child2:protected Parent
{
public:
int getPub()
{
return pub;
}
int getPtd()
{
return ptd;
}
/* //错误。不管什么继承,子类不能访问父类的private成员变量,但可以访问protected和public成员变量。
int getPrt()
{
return prt;
}
*/
};
class child3:private Parent
{
public:
int getPub()
{
return pub;
}
int getPtd()
{
return ptd;
}
/* //错误。不管什么继承,子类不能访问父类的private成员变量,但可以访问protected和public成员变量。
int getPrt()
{
return prt;
}
*/
};
int _tmain(int argc, _TCHAR* argv[])
{
child1 ch1;
child2 ch2;
child3 ch3;
int var = 0;
ch1.pub = var;
//ch1.ptd = var; //错误。父类的保护成员变量、私有成员不能够被
//var = ch1.ptd; //以任何形式继承的子类的任何对象访问和修改
var = ch1.getPtd();
//var = ch2.pub; //错误。保护继承将父类的中的public和protected成员都变成子类protected类型的成员变量,而一个类的对象是无法访问
//ch2.pub = var; //错误。该类的protected和private成员变量的,所以一个保护继承子类的对象是无法访问和修改父类中public的成员变量的。
var = ch2.getPtd();
//ch3.Pub() = var;//错误。私有继承将父类中的成员变量全部变成子类中private类型的,此时子类对象当然不能修改和访问这些私有成员变量。
var = ch3.getPtd();
return 0;
}
私有继承、保护继承、公共继承之间的区别(代码形式)
最新推荐文章于 2023-01-22 22:00:00 发布