c/c++ 继承与多态 继承中的public, protected, private
程序员文章站
2022-10-18 23:48:42
问题:类B私有继承类A,类A有个protected成员,那么在类B的成员函数里是否可以使用类A的protected成员? 可以使用。 估计有的同学说不对吧,类B都私有继承了类A了,怎么还能访问类A的protect成员呢?请看下面的例子。在类Pri_derv的f()成员函数里是可以方位父类Base的p ......
问题:类b私有继承类a,类a有个protected成员,那么在类b的成员函数里是否可以使用类a的protected成员?
可以使用。
估计有的同学说不对吧,类b都私有继承了类a了,怎么还能访问类a的protect成员呢?请看下面的例子。在类pri_derv的f()成员函数里是可以方位父类base的pub_mem();和prot_mem;的。
class base{ public: void pub_mem(); protected: int prot_mem; private: char pri_mem; }; class pub_derv : public base{ int f(){ pub_mem(); return prot_mem; } //char g(){return pri_mem;}//error }; class pri_derv : private base{ int f(){ pub_mem(); return prot_mem; } };
所以,子类不管是以什么方式继承父类,父类的public成员和protected成员在子类里永远都是可以访问的。
那么,public,protected,private继承都有什么用途呢?
控制它的子类,或者使用它的类,可以访问哪些成员变量。
- public继承:原来父类的public,protected,private成员在子类里保持不变。
- protected继承:原来父类的public成员在子类里变成protected的了,其余不变,所以,当别的类使用这个子类, 或者另一个类继承这个子类时候,这个子类的父类的public就不能被访问了。
- private继承:原来父类所以成员在子类里都变成private的了,所以,当别的类使用这个子类, 或者另一个类继承这个子类时候,这个子类的父类的public就不能被访问了。
类pri_derv私有继承base,所以在pri_derv的成员方法里是可以访问base的public,protected成员的;但是base的public,protected成员在类pri_derv里已经是私有的了,所以当pri_pri_derv继承pri_derv,在pri_pri_derv的成员方法里是不能再访问base的public,protected成员。
class base{ public: void pub_mem(); protected: int prot_mem; private: char pri_mem; }; class pub_derv : public base{ int f(){ pub_mem(); return prot_mem; } //char g(){return pri_mem;}//error }; class pri_derv : private base{ int f(){ pub_mem(); return prot_mem; } }; class pub_pub_derv : public pub_derv{ int f(){ pub_mem(); return prot_mem; } //char g(){return pri_mem;}//error }; class pri_pri_derv : private pri_derv{ int f(){ pub_mem();//error return prot_mem;//error } };
c/c++ 学习互助qq群:877684253
本人微信:xiaoshitou5854
上一篇: 嘿嘿,逗男逗女逗笑你
下一篇: 武汉开通RFID自助图书馆,方便书迷阅读
推荐阅读
-
c/c++ 继承与多态 子类隐藏父类的同名非虚函数
-
c/c++ 继承与多态 引用有的时候并不能达到多态的效果
-
c/c++ 继承与多态 继承中的public, protected, private
-
Effective C++条款32:继承与面向对象之(确定你的public继承塑模出is-a关系)
-
C++知识点46——类继承中的类型转换与访问权限控制(中)
-
C++中,public、protected、private三者的区别讲解
-
C++中菱形继承的解释与处理详解
-
C++ public、protected、private继承
-
C++ 中 public、protected 及 private 的使用总结
-
C++中public、protected、private继承的区别