C++ derived class access specifier
2014-02-10 22:23
204 查看
// 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 //优先级大的可以改变优先级小的
相关文章推荐
- What happens when more restrictive access is given to a derived class method in C++?
- In c++ access control works on per-class basis not on per-object basis.
- a c++ program of derived class
- (原創) C++的4個Class Access Label (C/C++)
- protected: C++ access control works on per-class basis, not on per-object basis
- [C++] OOP - Access Control and Class Scope
- C++ Template Class Derived
- C++中 #include与直接写class加类名有何区别
- 【C++】如何解决“pointer to incomplete class type is not allowed”。
- C++语法基础01--类(class)
- C++面向对象编程<十二>转换函数、explicit、class几种表现形式
- C++ friend function and friend class
- c++编译错误:invalid new-expression of abstract class type
- BV、VFP、C++、Access、Photoshop 以下这些计算机二级考试内容中 那种是比较容易考的呢
- C++ 模板类=设计 or template class operator=
- error C2248: 'CObject::operator =' : cannot access private member declared in class 'CObject'
- C++ Friend class
- C++中struct和class的区别
- JSVM9_19中class AccessUnit解释说明(待续)
- C++:struct与class的区别