c/c++ 继承与多态 继承中的public, protected, private
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c/c++ 继承与多态 继承中的public, protected, private,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1877字,纯文字阅读大概需要3分钟。
内容图文
![c/c++ 继承与多态 继承中的public, protected, private](/upload/InfoBanner/zyjiaocheng/844/f0cb9834687c42b88df7751a06daa6c1.jpg)
问题:类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
内容总结
以上是互联网集市为您收集整理的c/c++ 继承与多态 继承中的public, protected, private全部内容,希望文章能够帮你解决c/c++ 继承与多态 继承中的public, protected, private所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。