ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++ //继承中的对象模型 //利用开发人员命令提示工具查看对象模型 //父类中所有非静态成员属性都会被 子类继承下去 //父类中私有成员属性 是被编译器给隐藏了 因此是访问不到 但是确实被继承

2021-08-08 10:02:16  阅读:152  来源: 互联网

标签:访问 继承 子类 int 私有 父类 public 属性


  1 //继承方式
  2 //语法:class 子类 :继承方式  父类
  3 //继承方式 三种:
  4 //1.公共继承
  5 //2.保护继承
  6 //3.私有继承
  7 
  8 /*
  9 #include <iostream>
 10 #include <string>
 11 using namespace std;
 12 
 13 //继承方式
 14 //1.公共继承
 15 class Base1
 16 {
 17 public:
 18     int m_A;
 19 protected:
 20     int m_B;
 21 private:
 22     int m_C;
 23 
 24 };
 25 //1.公共继承
 26 class Son1 :public Base1
 27 {
 28 public:
 29     void func()
 30     {
 31         m_A = 10;   //父类中的公共权限成员 到子类中依然是 公共权限
 32 
 33         m_B = 20;  //父类中的公共权限成员,到子类依然是   保护权限
 34                    //类内可以访问   类外不可以访问
 35 
 36         //m_C = 30;  //父类中的私有全程成员,到子类中 访问不到    
 37     }
 38 };
 39 
 40 void test01()
 41 {
 42     Son1 s1;
 43     s1.m_A = 100;
 44     //s1.m_B = 100;  //类内可以访问   类外不可以访问
 45     
 46 
 47 }
 48 //保护继承
 49 class Base2
 50 {
 51     public:
 52         int m_A;
 53     protected:
 54         int m_B;
 55     private:
 56         int m_C;
 57 
 58 
 59 };
 60 
 61 class Son2 : protected Base2
 62 {
 63 public:
 64     void func2()
 65     {
 66         m_A = 100;  //父类中公共成员到 子类中变为保护权限
 67         m_B = 100;  //没有发生变化  还是私有成员
 68 
 69         //m_C = 100; //父类中私有成员 子类访问不到
 70     }
 71 };
 72 
 73 void test02()
 74 {
 75     Son2 s2;
 76     //s2.m_A = 1000;  //在Son2中已经变为了 保护权限  所以类外 访问不到
 77     //s2.m_B = 200;    //在Son2中已经变为了 保护权限  所以类外 访问不到
 78     //s2.m_C = 551;    //私有成员不可以访问
 79 
 80 
 81 }
 82 //私有继承
 83 class Base3
 84 {
 85     public:
 86         int m_A;
 87     protected:
 88         int m_B;
 89     private:
 90         int m_C;
 91 
 92 };
 93 class Son3 :private Base3
 94 {
 95 public:
 96     void func3()
 97     {
 98         m_A = 100;      //父类中公共成员到子类中变为 私有成员
 99 
100         m_B = 200;     //父类中保护成员到子类中变为  私有成员
101 
102         //m_C = 120;      //父类中的私有成员  子类不可以访问
103     }
104 
105 };
106 class GrandSon4 : public Son3
107 {
108 public:
109     void func4()
110     {
111         //m_A = 1000;  //到了 Son3中 m_A 变为私有,即使是 儿子也访问不到 
112         //m_B = 2000;  //到了 Son3中 m_A 变为私有,即使是 儿子也访问不到 
113     }
114 
115 };
116 void test03()
117 {
118     Son3 s3;
119 
120     //s3.m_A = 200;    //到Son3中 变为私有成员 访问不到
121     //s3.m_B = 100;    //到Son3中 变为私有成员 访问不到
122     //s3.m_C = 300;    //父类中的私有成员  子类不可以访问
123 
124 }
125 
126 int main()
127 {
128 
129 
130     system("pause");
131 
132     return 0;
133 
134 }
135 
136 */
137 
138 
139 
140 //继承中的对象模型
141 
142 
143 #include <iostream>
144 #include <string>
145 using namespace std;
146 
147 class Base
148 {
149 public:
150     int m_A;
151 protected:
152     int m_B;
153 private:
154     int m_C;
155 };
156 class Son :public Base
157 {
158 public:
159     int m_D;
160 };   
161 //利用开发人员命令提示工具查看对象模型
162 //跳转盘符 
163 //跳转文件路径 cd + 具体路径
164 //查看命名
165 //cl /d1 reportSingleClassLayout类名 文件名
166 void test01()
167 {
168     //16
169     //父类中所有非静态成员属性都会被 子类继承下去
170     //父类中私有成员属性 是被编译器给隐藏了 因此是访问不到 但是确实被继承下去了
171 
172     cout << "sizeof son = " << sizeof(Son) << endl;
173 }
174 
175 int main()
176 {
177 
178     test01();
179 
180 
181     system("pause");
182 
183     return 0;
184 
185 }

 

 

 

标签:访问,继承,子类,int,私有,父类,public,属性
来源: https://www.cnblogs.com/Bytezero/p/15114176.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有