C++ Qt 访问权限总结
總結:C++的訪問修飾符的作用是以類為單位,而不是以對象為單位。
?
通俗的講,同類的對象間可以“互相訪問”對方的數據成員,只不過訪問途徑不是直接訪問.
步驟是:通過一個對象調用其public成員函數,此成員函數可以訪問到自己的或者同類其他對象的public/private/protected數據成員和成員函數(類的所有對象共用),而且還需要指明是哪個對象的數據成員(調用函數的對象自己的成員不用指明,因為有this指針;其他對象的數據成員可以通過引用或指針間接指明)
?
?
?
C++中public,protected,private訪問小結
1、private,public,protected方法的訪問范圍.(public繼承下)
private: 只能由該類中的函數、其友元函數訪問,不能被任何其他訪問,該類的對象也不能訪問.?
protected: 可以被該類中的函數、子類的函數、以及其友元函數訪問,但不能被該類的對象訪問?
public: 可以被該類中的函數、子類的函數、其友元函數訪問,也可以由該類的對象訪問
注:友元函數包括兩種:設為友元的全局函數,設為友元類中的成員函數
?
2、類的繼承后方法屬性變化:?
使用private繼承,父類的所有方法在子類中變為private;?
使用protected繼承,父類的protected和public方法在子類中變為protected,private方法不變;?
使用public繼承,父類中的方法屬性不發生改變;?
?
| ? | public: | protected: | private: |
| public繼承 | public | protected | --- |
| protected繼承 | protected | protected | --- |
| private繼承 | private | private | --- |
?
?
protected繼承和private繼承能降低訪問權限
?
再次提到:可以提供訪問行為的主語為“函數”。
類體內的訪問沒有訪問限制一說,即private函數可以訪問public/protected/private成員函數或數據成員,同理,protected函數,public函數也可以任意訪問該類體中定義的成員
public繼承下,基類中的public和protected成員繼承為該子類的public和protected成員(成員函數或數據成員),然后訪問仍然按類內的無限制訪問
?
?
Qt信號槽的訪問限制
?
?
1、關鍵字signals指出隨后開始信號的聲明,這里signals用的是復數形式而非單數,siganls沒有public、private、protected等屬性,這點不同于slots。另外,signals、slots關鍵字是QT自己定義的,不是C++中的關鍵字。
?
2、槽也是普通的C++函數,可以一樣被調用,他唯一的特點就是 他們可以被信號連接。因為槽就是普通的成員函數,它們也和普通的成員函數一樣有訪問權限,一個槽的訪問權限決定了哪些信號可以和它相連接,而信號就沒有訪問權限的概念。
?
一個public slots:區包含了任何信號都可以相連的槽。你生成了許多對象,它們互相并不知道,把它們的信號和槽連接起來,這樣信息就可以正確地傳遞,并且就像一個鐵路模型,把它打開然后讓它跑起來。
?
一個protected slots:區包含了之后這個類和它的子類的信號才能連接的槽。這就是說這些槽只是類的實現的一部分,而不是它和外界的接口。
?
一個private slots:區包含了之后這個類本身的信號可以連接的槽。這就是說它和這個類是非常緊密的,甚至它的子類都沒有獲得連接權利這樣的信任。
?
轉載于:https://www.cnblogs.com/lvdongjie/p/3758177.html
總結
以上是生活随笔為你收集整理的C++ Qt 访问权限总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python猫荐书系列之七:Python
- 下一篇: QT_4_QpushButton的简单使