C++访问权限 public、protected、private 解析
2014-05-29 21:16
495 查看
参考:http://blog.csdn.net/complety/article/details/7493194
--访问权限的作用和目的:
1.控制外界是否可访问
2.控制子类是否可继承
3.过滤子类继承时的权限(继承方式)
--三种访问权限
public:外部使用时(实体对象)可见、子类及本类内部/ 成员函数、友元函数可见
protected:子类及本类内部/ 成员函数、友元函数可见
private:本类内部/ 成员函数、友元函数可见 (默认private)
备注:[b]访问权限[b]主要体现在成员(变量/函数)对其 对象(外部)、类(内部) 可见性俩方面。[/b][/b]
--三种继承方式:public继承、 protect继承 、private继承;(默认private继承)
继承之后基类成员最终权限 = Min(继承权限 ,原权限);
--例子从已下3方面谈:
1.基类成员对其对象的可见性:
2. 基类成员对派生类的可见性:
3. 基类成员对派生类对象的可见性:
--访问权限的作用和目的:
1.控制外界是否可访问
2.控制子类是否可继承
3.过滤子类继承时的权限(继承方式)
--三种访问权限
public:外部使用时(实体对象)可见、子类及本类内部/ 成员函数、友元函数可见
protected:子类及本类内部/ 成员函数、友元函数可见
private:本类内部/ 成员函数、友元函数可见 (默认private)
备注:[b]访问权限[b]主要体现在成员(变量/函数)对其 对象(外部)、类(内部) 可见性俩方面。[/b][/b]
--三种继承方式:public继承、 protect继承 、private继承;(默认private继承)
继承之后基类成员最终权限 = Min(继承权限 ,原权限);
--例子从已下3方面谈:
1.基类成员对其对象的可见性:
2. 基类成员对派生类的可见性:
3. 基类成员对派生类对象的可见性:
#include <iostream> class base{ public: base(){ a = 0; b = 1; c = 2; } int a; protected: int b; private: int c; }; class derived1 : public base{//public继承 public: void fun(){//derived class可以访问public和protected member std::cout<<base::a<<base::b<<std::endl; // std::cout<<base::c;//不能访问 } }; class derived2 : protected base{//protected继承 public: void fun(){//derived class可以访问public和protected member std::cout<<base::a<<base::b<<std::endl; // std::cout<<base::c;//不能访问 } }; class derived3 : private base{//private继承 public: void fun(){//derived class可以访问public和protected member std::cout<<base::a<<base::b<<std::endl; // std::cout<<base::c;//不能访问 } }; class derived4 : public derived3{//base的member不能被private继承的派生类的子类访问 public: void fun(){ // std::cout<<a; } }; class derived5 : base{//默认private继承 void fun(){//derived class可以访问public和protected member std::cout<<base::a<<base::b; // std::cout<<base::c;//不能访问 } }; int main(void) { base b1; derived1 d1; derived2 d2; derived3 d3; d1.fun(); d2.fun(); d3.fun(); std::cout<<b1.a;//base class Object只能访问public member std::cout<<d1.a;//public继承时 derived class Object只能访问base class的public member //std::cout<<d1.b<<d1.c;//不能访问 //std::cout<<d2.a<<d2.b;//protected继承时 derived class Object不能问访base class的member //std::cout<<d3.a;//private继承时 derived class Object不能问访base class的member return 0; }
相关文章推荐
- public,private,protected访问权限在Java,C++中的解析
- public,private,protected访问权限在Java,C++中的解析
- public,private,protected访问权限在Java,C++中的解析
- public,private,protected访问权限在Java,C++中的解析
- public,private,protected访问权限在Java,C++中的解析
- c++ private public protected-->类的访问权限小结
- C++的三种继承机制以及继承机制对三种访问权限(public, protected, private)的影响
- 对于C++中公有(public)、私有(private)、保护(protected),访问权限的一点总结
- C++的访问权限控制关键字:private / public / protected
- C++中 public,protected, private 访问权限标号小结
- C++之public、private、protected(一)派生类继承与访问权限详解
- C++中public,protected,private派生类继承问题和访问权限问题
- C++中的 public和private以及protected派生类继承问题和访问权限问题
- C++中public,protected,private派生类继承问题和访问权限问题
- C++中 public,protected, private 访问权限标号小结
- C++对于类访问权限public,protected,private的深刻理解
- C++_public,protected,private访问权限
- C++中public,protected,private派生类继承问题和访问权限问题
- C++ public protected private成员访问权限解读
- C++访问权限控制(public、protected、private)