C++的三种访问权限的继承
C++的三種訪問權限的繼承
開發工具與關鍵技術:C++、VisualStudio 作者:何任賢 撰寫時間:2019年05月20日 三種訪問權限繼承指的是,繼承過來的成員函數和成員變量還有析構函數的訪問權限,首先三種訪問權限分別是公有訪問權限(public)和私有訪問權限(private)還有保護訪問權限(protected)三種,struct結構體的默認訪問權限是公有(public),class類類型的默認訪問權限是私有(private)。 那么它們分別是什么意思呢?public意思是被其修飾的成員是公有的,可以在類外類內訪問,private意思是被其修飾的成員是私有的,只能在類內訪問,protected意思是被其修飾的成員是受保護的,和private一樣只能在類內訪問,這個一樣指的是訪問權限一樣,但是還是有區別的,體現在繼承中。 首先是公有繼承的例子class A
{
public:
int a;
protected:
int b;
private:
int c;
};
class B: public A
{
public:
int d;
protected:
int e;
private:
int f;
};
class C : public B
{
};
首先是在main()中進行對變量進行訪問發現,只能點出公有的成員變量,保護和私有的沒有,這里沒有并不是沒有繼承下來,下面我在B類內和C類內進行訪問
對此我們可以知道的公有繼承是把公有的繼承之后還是公有的,私有的繼承之后還是私有的,保護繼承之后還是保護的,上面我說過保護和私有是區別,私有的被繼承之后不管是派生類內還是派生類外都不能訪問,但是保護的繼承之后在派生類內可以訪問,在類外不可以訪問,這就是私有和保護的區別。那么公有繼承的特點是公有的還是公有的,私有的還是私有的,保護的還是保護的。
下面是保護繼承的,還是上面的代碼只是把class B: public A和class C : public B改成class B: protected A和class C : protected B。
我們可以發現公有的經過保護繼承后,雖然可以把原來是公有點出來但是不能訪問,那么在派生類中可以訪問嗎?
我們發現除了原本在基類中是私有的以外,都可以訪問,證明了保護繼承把公有的變成保護,那么保護繼承的特點是把公有的變成保護的,私有的還是私有的,保護的還是保護的。
下面是私有繼承的,還是上面的代碼只是把class B: public A和class C : public B改成class B: private A和class C : private B。
我們可以發現公有的經過私有繼承后,雖然可以把原來是公有點出來但是不能訪問,那么在派生類中可以訪問嗎?
我們發現原本在A類中的公有和保護在經過私有繼承B類中是可以訪問的和保護繼承好像沒什么區別,但是C類在繼承B類是發現除了B類中的d和e成員變量以外其他的都不可以訪問,證明了私有繼承把公有的和保護的都變成私有的,那么私有繼承的特點是把公有的變成私有的,保護的變成私有的,私有的還是私有的。
三種訪問權限經過不同的繼承后,改變訪問權限或者不改變訪問權限。
經過上面的內容我們可以得出
1.公有的訪問權限除了公有繼承不會改變其訪問權限以外,其他的繼承都會改變其訪問權限;
2.保護的訪問權限只有是私有繼承會改變其訪問權限外,其他的繼承都不改變其訪問權限;
3.私有的訪問權限不管是什么繼承,都不會改變其的訪問權限;
總結
以上是生活随笔為你收集整理的C++的三种访问权限的继承的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 产品经理和开发打起来了
- 下一篇: 2021中国音乐市场年度综合分析