标签:code div color 继承 src 技术分享 com out play
被忽视的细节:
问题:
示例:
可以看到其他两种继承方式也完全可以编译通过。
这三种不同的继承有什么区别呢?
不同的继承方式:
深度实践:
1 #include <iostream> 2 #include <string> 3 4 using namespace std; 5 6 class Parent 7 { 8 protected: 9 int m_a; 10 protected: 11 int m_b; 12 public: 13 int m_c; 14 15 void set(int a, int b, int c) 16 { 17 m_a = a; 18 m_b = b; 19 m_c = c; 20 } 21 }; 22 23 class Child_A : public Parent 24 { 25 public: 26 void print() 27 { 28 cout << "m_a" << m_a << endl; 29 cout << "m_b" << m_b << endl; 30 cout << "m_c" << m_c << endl; 31 } 32 }; 33 34 class Child_B : protected Parent 35 { 36 public: 37 void print() 38 { 39 cout << "m_a" << m_a << endl; 40 cout << "m_b" << m_b << endl; 41 cout << "m_c" << m_c << endl; 42 } 43 }; 44 45 class Child_C : private Parent 46 { 47 public: 48 void print() 49 { 50 cout << "m_a" << m_a << endl; 51 cout << "m_b" << m_b << endl; 52 cout << "m_c" << m_c << endl; 53 } 54 }; 55 56 int main() 57 { 58 Child_A a; 59 Child_B b; 60 Child_C c; 61 62 a.m_c = 100; 63 // b.m_c = 100; // Child_B 保护继承自 Parent, 所以所有的 public 成员全部变成了 protected 成员, 因此外界无法访问 64 // c.m_c = 100; // Child_C 私有继承自 Parent, 所以所有的成员全部变成了 private 成员, 因此外界无法访问 65 66 a.set(1, 1, 1); 67 // b.set(2, 2, 2); 68 // c.set(3, 3, 3); 69 70 a.print(); 71 b.print(); 72 c.print(); 73 74 return 0; 75 }
遗憾的事实:
JAVA、C#就只有一种继承方式--公有继承。
小结:
标签:code div color 继承 src 技术分享 com out play
原文地址:https://www.cnblogs.com/wanmeishenghuo/p/9574677.html