标签:访问 继承 子类 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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。