C++中不同的继承方式
生活随笔
收集整理的這篇文章主要介紹了
C++中不同的继承方式
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 1 C++中不同的繼承方式
- 1.1 繼承中被忽視的細(xì)節(jié)
- 1.2 不同的繼承方式
- 1.3 繼承中只選擇public繼承
1 C++中不同的繼承方式
1.1 繼承中被忽視的細(xì)節(jié)
如下:
1.2 不同的繼承方式
C++中支持三種不同的繼承方式:
- public繼承:父類成員在子類中保持原有訪問級別。
- private繼承:父類成員在子類中變?yōu)樗接谐蓡T。
- protected繼承:父類中的公有成員變?yōu)楸Wo(hù)成員,其它成員保持不變。
繼承與訪問級別深度實踐:
#include <iostream> #include <string>using namespace std;class Parent { protected:int m_a; protected:int m_b; public:int m_c;void set(int a, int b, int c){m_a = a;m_b = b;m_c = c;} };class Child_A : public Parent { public:void print(){cout << "m_a" << m_a << endl;cout << "m_b" << m_b << endl;cout << "m_c" << m_c << endl;} };class Child_B : protected Parent { public:void print(){cout << "m_a" << m_a << endl;cout << "m_b" << m_b << endl;cout << "m_c" << m_c << endl;} };class Child_C : private Parent { public:void print(){cout << "m_a" << m_a << endl;cout << "m_b" << m_b << endl;cout << "m_c" << m_c << endl;} };int main() { Child_A a;Child_B b;Child_C c;a.m_c = 100;// b.m_c = 100; // Child_B 保護(hù)繼承自 Parent, 所以所有的 public 成員全部變成了 protected 成員, 因此外界無法訪問// c.m_c = 100; // Child_C 私有繼承自 Parent, 所以所有的成員全部變成了 private 成員, 因此外界無法訪問a.set(1, 1, 1);// b.set(2, 2, 2);// c.set(3, 3, 3);a.print();b.print();c.print();return 0; }關(guān)于繼承的不同方式,如下內(nèi)容特別需要注意:
- 無論通過什么方式(public、protected、private)繼承,在子類內(nèi)部均可訪問父類中的public、protected成員,private成員不可訪問(如果想要子類能夠訪問,就定義為protected)。
- 繼承方式只影響外界通過子類對父類成員的訪問權(quán)限。
- public繼承,父類成員的訪問權(quán)限全部保留至子類;
- protected繼承,父類public成員的訪問權(quán)限在子類中降至protected;
- private繼承,父類public、protected成員的訪問權(quán)限在子類中均降至private。
1.3 繼承中只選擇public繼承
關(guān)于繼承方式:
- 一般而言,C++工程項目中只使用public繼承。
- C++的派生語言只支持一種繼承方式(public繼承)。
- protected和private繼承帶來的復(fù)雜性遠(yuǎn)大于實用性。
參考資料:
總結(jié)
以上是生活随笔為你收集整理的C++中不同的继承方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 去高速服务区吃饭应该怎么选择食品?
- 下一篇: C++继承中的构造与析构