(C++)4段代码弄清基本的访问控制
Posted CSU迦叶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(C++)4段代码弄清基本的访问控制相关的知识,希望对你有一定的参考价值。
将访问的发起者分为类本身(包括成员函数、友元函数)、类的对象、派生类(包括成员函数、友元函数)、派生类的对象。
程序使用方法:放到编译器,用单一变量法跑ε=ε=ε=(~ ̄▽ ̄)~
注意:必须先理解一、再去看二三四
代码段一:还没有出现继承和派生
#include <iostream>
using namespace std;
class BaseClass
public:
int PublicVari;
void PublicFunc();
protected:
int ProtectedVari;
void ProtectedFunc();
private:
int PrivateVari;
void PrivateFunc()
//1. 类本身可以访问私有成员
//私有成员可以访问,则保护、公有不用说
;
;
int main()
BaseClass baseClass;
//2. 类的对象不可以访问私有成员
//3. 类的对象不可以访问受保护成员
//4. 类的对象可以访问公有成员
代码段二:公有继承,派生类对基类成员的访问权限一览
#include <iostream>
using namespace std;
class BaseClass
public:
int PublicVari;
void PublicFunc();
protected:
int ProtectedVari;
void ProtectedFunc();
private:
int PrivateVari;
void PrivateFunc();
;
class PublicDerivedClass : public BaseClass
public:
void PublicDerivedFunc()
//1.子类可以访问父类的公有成员
//2.子类可以访问父类的受保护成员(而父类自身的对象不可以)
//3.子类不可以访问父类的私有成员
// cout<<Vari<<endl;
;
;
int main()
PublicDerivedClass pudeClass;
//4.子类对象可以访问父类的公有成员
//5.子类对象不可以访问父类的受保护成员,则父类的私有成员不用说
代码段三:保护继承,派生类对基类成员的访问权限一览
#include <iostream>
using namespace std;
class BaseClass
public:
int PublicVari;
void PublicFunc();
protected:
int ProtectedVari;
void ProtectedFunc();
private:
int PrivateVari;
void PrivateFunc();
;
class PublicDerivedClass : protected BaseClass
public:
void PublicDerivedFunc()
//1.子类可以访问父类的公有成员
//2.子类可以访问父类的受保护成员
//3.子类不可以访问父类的私有成员
// cout<<PrivateVari<<endl;
//以上三个和公有继承一样
;
;
int main()
PublicDerivedClass pudeClass;
//4.子类对象不可以访问父类的公有成员,结合ex2解释原因 (public->protected)
// pudeClass.PublicFunc();
//则父类的受保护成员和私有成员不用说
代码段四:私有继承,派生类对基类成员的访问权限一览
#include <iostream>
using namespace std;
class BaseClass
public:
int PublicVari;
void PublicFunc();
protected:
int ProtectedVari;
void ProtectedFunc();
private:
int PrivateVari;
void PrivateFunc();
;
class PublicDerivedClass : private BaseClass
public:
void PublicDerivedFunc()
//1.子类可以访问父类的公有成员
//2.子类可以访问父类的受保护成员
//3.子类不可以访问父类的私有成员
// cout<<PrivateVari<<endl;
//以上三个和公有、受保护继承一样
;
;
int main()
PublicDerivedClass pudeClass;
//4.子类对象不可以访问父类的公有成员,结合ex2解释原因(public->private)
pudeClass.PublicFunc();
//则父类的受保护成员和私有成员不用说
一张图总结
我个人在学习时的小小方法论,也许可以辅助记忆,即从访问控制的严格程度来看,private>protected>public,如果较严的控制都满足,相对不严的一定满足;如果较松的都不满足,相对较严的一定不满足,因此只需要记忆临界点。如类的对象访问不了类中的受保护成员,则一定访问不了类的私有成员了。
以上是关于(C++)4段代码弄清基本的访问控制的主要内容,如果未能解决你的问题,请参考以下文章