1:访问控制

1.1 public 这类型成员可以被类本身函数访问,也可以被外部创建的类对象调用。子类对象与子类内部可以访问

1.2 protected类型成员,只能被类本身函数访问。外部创建的类对象没有访问权限。子类对象没有访问权限,子类内部可以访问

1.3 private类型成员,只能被类本身函数访问,外部创建的类对象没有访问权限。子类对象和子类内部都没有访问权限

class TestObject{
public:void Function();void TestPublic();
protected:void TestProtected();
private:void TestPrivate();
};void TestObject::Function(){TestPublic();TestProtected();TestPrivate();
}int main(){TestObject obj;obj.TestPublic();//yesobj.TestProtected();//errorobj.TestPrivate();//error
}

2:继承关系的访问控制

2.1 public继承。public继承使子类顺延父类的访问控制属性,即成员保持父类的控制属性,这样在子类中的成员访问控制同父类的一样

class Base
{
public:Base(void);~Base(void);void TestPublic();
protected:void TestProtected();
private:void TestPrivate();
};void Base::TestPublic(){cout<<"TestPublic"<<endl;
}void Base::TestProtected(){cout<<"TestProtected"<<endl;
}void Base::TestPrivate(){cout<<"TestPrivate"<<endl;
}class Child :public Base
{
public:Child ();
};Child ::Child (){child.TestPublic();//yesTestProtected();//yesTestPrivate();//error
}int _tmain(int argc, _TCHAR* argv[])
{Child child;child.TestPublic();//yes//child.TestProtected();//error//child.TestPrivate();//errorreturn 0;
}

2.2 protected继承,将父类public和protected属性的成员属性顺延到子类来后变成protected属性。protected属性是可以提供给子类在内部访问的。

如上代码,如果改为protected继承。则内部访问保持和public继承的不变,而在外部,由于父类public属性被更改为protected的属性,则在外部创建的子类对象没有了访问权限。

class Child :protectedBase{
}Child ::Child (){child.TestPublic();//yesTestProtected();//yesTestPrivate();//error
}int _tmain(int argc, _TCHAR* argv[])
{Child child;//child.TestPublic();//error//child.TestProtected();//error//child.TestPrivate();//errorreturn 0;
}

2.3 private继承。这种继承方式中断了后续子类对当前类的父类的所有访问权限,在该种继承方式下,会将父类public和protected属性顺延成private属性。这样,几时后面子类再次继承,都没有了对当前父类的成员的访问权限。

class Child :privateBase{
}Child ::Child (){child.TestPublic();//yesTestProtected();//yesTestPrivate();//error
}class Mini :public Child{public:Mini();
}Mini::Mini(){TestPublic();//errorTestProtected();//errorTestPrivate();//error

}int _tmain(int argc, _TCHAR* argv[])
{Mini mini;//mini.TestPublic();//error//mini.TestProtected();//error//mini.TestPrivate();//errorreturn 0;
}

转载于:https://www.cnblogs.com/zhidao-chen/p/3834155.html

c++ public protected private 继承相关推荐

  1. C++ (public, protected, private继承)

    http://thinkinginmylife.spaces.live.com/blog/cns!E44140D5E07BEC07!137.entry 我转~~~C++5(public, protec ...

  2. php protected 的继承,14 PHP 类的继承 [public protected private] parent 构造方法 析构方法 重写 最终类和方法 设计模式...

    类的继承 简单理解: 某个类A具有某些特征,另一个类B,也具有A类的所有特征,并且还可能具有自己的更多的一些特征,此时,我们就可以实现:B类使用A的特征信息并继续添加自己的一些特有特征信息. 基本概念 ...

  3. C++ 中的三种继承public , protected, private

    三种访问权限 public:可以被任意实体访问 protected:只允许子类及本类的成员函数访问 private:只允许本类的成员函数访问 三种继承方式 public 继承 protect 继承 p ...

  4. C++中的三种继承public,protected,private详细解析

    我们已经知道,在基类以private方式被继承时,其public和protected成员在子类中变为private成员.然而某些情况下,需要在子类中将一个或多个继承的成员恢复其在基类中的访问权限 三种 ...

  5. JAVA修饰符类型(public,protected,private,friendly)

    JAVA修饰符类型(public,protected,private,friendly) public的类.类属变量及方法,包内及包外的不论什么类均能够訪问: protected的类.类属变量及方法, ...

  6. Java关键字系列(public,protected,private)

    Java关键字系列(public,protected,private) public.protected和private做为java访问权限修饰词而使用. 首先要明白,java中的每个定义(定义类.字 ...

  7. C++ 类访问控制(public/protected/private)小结

    第一:private, public, protected 访问标号的访问范围. private:只能由1.该类中的函数.2.其友元函数访问. 不能被任何其他访问,该类的对象也不能访问. protec ...

  8. C++ Public, Protected, Private

    当private,public,protected单纯的作为一个类中的成员权限设置时: private: 只能由该类中的函数.其友元函数访问,不能被任何其他访问,该类的对象也不能访问. protect ...

  9. C++ 类访问控制(public/protected/private)

    From: http://cnmtjp.blog.51cto.com/204390/36548 C++中 public,protected, private 访问标号小结 第一:private, pu ...

  10. public protect private继承

    引自原来在CGD讨论的几点总结: 1. public继承被称为类型继承(type inheritance).往往反映is-a关系. 2. protected继承基类的所有公有成员都成为派生类的prot ...

最新文章

  1. php 开发restful api,用PHP创建RESTful API?
  2. opencv学习(十六)之颜色空间转换cvtColor()
  3. Seafile:用挂载盘客户端让企业在线编辑云端文件
  4. 【学习/模板】tarjan割点
  5. 你一定不知道的 Linux 使用技巧
  6. a challengefor the 2 hour course
  7. Ant build.xml中的各种变量
  8. java mvc 导出excel_Java springMVC POI 导出 EXCEL
  9. java程序cpu突然飚高_Java 定位导致CPU飙升的代码过程
  10. 一体化医用电脑推车行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  11. 灰度共生矩阵GLCM及其matlab实现
  12. Coursera, Big Data 3, Integration and Processing (week 1/2/3)
  13. 450B Jzzhu and Sequences 我考研之后做的第一道题
  14. JAVA实现杨辉三角的三种方式
  15. 软考中级-软件设计师|下午题攻略
  16. Excel常用函数——count
  17. 怎样去除抖音短视频的水印,快速去除视频水印的方法
  18. java 同比环比_数据相关概念同比,环比
  19. 手机百度浏览器怎么设置繁体字_繁体字转换简体字在线转换_有什么软件可以把繁...
  20. windows消息大全

热门文章

  1. ps 命令查看进程状态
  2. [ POI 2005 ] Bank Notes
  3. Web负载均衡与分布式架构
  4. [bzoj3223]Tyvj 1729 文艺平衡树
  5. BestCoder Round #56/hdu5463 Clarke and minecraft 水题
  6. Python MapReduce
  7. 优秀程序员必须知道的八件事情
  8. php 二位数组排序
  9. Web API 2 对于 Content-Length 要求严格
  10. IdentityServer4支持的授权类型以及组合