C++筆記(2)public,private,protected關鍵字

來源:互聯網
上載者:User
1:private, public, protected 成員函數

private:只能由1.該類中的函數、2.其友元函數訪問。
不能被任何其他訪問,該類的對象也不能訪問。

protected:可以被1.該類中的函數、2.子類的函數、以及3.其友元函數訪問。
但不能被該類的對象訪問。

public:可以被1.該類中的函數、2.子類的函數、3.其友元函數訪問,也可以由4.該類的對象訪問。

註:友元函數包括3種:設為友元的普通的非成員函數;設為友元的其他類的成員函數;設為友元類中的所有成員函數。

2:private, public, protected 類的繼承

private 屬性不能夠被繼承。
使用private繼承,父類的protected和public屬性在子類中變為private;
使用protected繼承,父類的protected和public屬性在子類中變為protected;
使用public繼承,父類中的protected和public屬性不發生改變;

如下所示:
public: protected: private:
public繼承 public protected 不可用
protected繼承 protected protected 不可用
private繼承 private private 不可用

protected繼承和private繼承能降低存取權限。

 1#include <stdio.h>
 2
 3class    Base
 4{
 5    public:
 6        void fn_pub()
 7        {
 8        };
 9    private:
10        void fn_priv()
11        {
12        };
13    protected:
14        void fn_prot()
15        {
16        };
17};
18
19class Derived_pub: public Base
20{
21    public:
22        void Test()
23        {
24            fn_pub();
25            //fn_priv();    //Fail!!
26            fn_prot();
27        };
28};
29
30class Derived_priv: private Base
31{
32    public:
33        void Test()
34        {
35            fn_pub();
36            //fn_priv();//Fail!!
37            fn_prot();
38        };
39};
40
41class Derived_protec: protected Base
42{
43    public:
44        void Test()
45        {
46            fn_pub();
47            //fn_priv();//Fail!!
48            fn_prot();
49        };
50};
51
52
53Derived_pub     drvd_pub;
54Derived_priv     drv_priv;
55Derived_protec drv_protec;
56
57void main()
58{
59    drvd_pub.fn_pub();
60    //drvd_pub.fn_priv();//Fail!!
61    //drvd_pub.fn_prot();//Fail!!
62    
63    //drv_priv.fn_pub();//Fail!!
64    //drv_priv.fn_priv();//Fail!!
65    //drv_priv.fn_prot();//Fail!!
66    
67    //drv_protec.fn_pub();//Fail!!
68    //drv_protec.fn_priv();//Fail!!
69    //drv_protec.fn_prot();//Fail!!
70    
71}




參考:
http://blog.minidx.com/2007/11/03/48.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.