C++ derived class access specifier
// DerivedAccessSpecifier.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> using namespace std; class base { public: int pub_a = 0; private: int pri_b = 0; protected: int pro_c = 0; }; class pub_derived : public base { public: int use_pub(){ return pub_a; } //public派生类可以访问父类的public成员 //int use_pri(){ return pri_b; } //public派生类不可以访问父类的private成员 int use_pro(){ return pro_c; } //public派生类可以访问父类的protected成员 }; class pri_derived : private base { public: int use_pub(){ return pub_a; } //private派生类可以访问父类的public成员 //int use_pri(){ return pri_b; } //private派生类不可以访问父类的private成员 int use_pro(){ return pro_c; } //private派生类可以访问父类的protected成员 }; class pro_derived : protected base { public: int use_pub(){ return pub_a; } //protected派生类可以访问父类的public成员 //int use_pri(){ return pri_b; } //protected派生类不可以访问父类的private成员 int use_pro(){ return pro_c; } //protected派生类可以访问父类的protected成员 }; //由上可知,派生时的access specifier对派生类中的成员没有影响 class dd_pub : public pub_derived { public: int dd_use_pub(){ return pub_a; } //yes //int dd_use_pri(){ return pri_b; } //no int dd_use_pro(){ return pro_c; } //yes }; class dd_pri : public pri_derived { public: //int dd_use_pub(){ return pub_a; } //no //int dd_use_pri(){ return pri_b; } //no //int dd_use_pro(){ return pro_c; } //no }; class dd_pro : public pro_derived { public: int dd_use_pub(){ return pub_a; } //yes //int dd_use_pri(){ return pri_b; } //no int dd_use_pro(){ return pro_c; } //yes }; int _tmain(int argc, _TCHAR* argv[]) { pub_derived a; pri_derived b; pro_derived c; cout << a.pub_a << endl; //yes //cout << b.pub_a << endl; //no //cout << c.pub_a << endl; //no return 0; } //由上可知,派生时的access specifier对派生类的users有影响,users包括:派生类的派生类,派生类的对象。 //即影响派生类的interface //public : 父类的public、private、protected不变 //private: 父类的public、private、protected都变成private //protected: 父类的public变成protected,private不变,protected还是protected //即优先级为: private > protected > public //优先级大的可以改变优先级小的
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。