淺析C++:private、protected和public

來源:互聯網
上載者:User

標籤:

一:private、protected和public的存取權限問題:

private:1、類中的成員函數可以調用,2、類的友元函數可以調用,3、但是類對象無法直接調用。4、對於衍生類別,不管是成員函數還是衍生類別的對象都無法進行調用。

protected:1、類中的成員函數不可以調用,2、類的友元函數可以調用,3、類對象也無法進行調用。4、對於衍生類別,成員函數可以進行調用,但是衍生類別的對象則無法進行調用。

public:1、可以被類中的成員函數調用,2、類的友元函數可以調用,3、類對象也可以直接調用。4、對於衍生類別,成員函數和衍生類別的對象都可以進行調用。

註:友元函數包括1、設為友元的普通的非成員函數。2、設為友元的其它類的成員函數。3、設為友元類的所有成員函數。

 

二:關於private、protected和public的繼承問題:

1、不管是private、protected還是public,子類繼承了基類後,其必然繼承了基類所有成員(除了基類的建構函式和解構函式),同樣繼承了基類空間的大小。

#include<iostream>using namespace std;class A{public:    A()    {        cout<<"這是class A."<<endl;    }private:    int a;    int temp;};class B : private A{public:    B()    {        cout<<"這是class B."<<endl;    }private:    int b;};void main(){    cout<<sizeof(A)<<endl;    cout<<sizeof(B)<<endl;}
繼承後容量大小改變樣本:

2、類繼承後,屬性的變化。

  private 屬性可以被繼承,但是被繼承不管什麼情況下(除了基類的公有成員函數和基類的友元函數)都不能被直接調用;
  使用private繼承,父類的protected和public屬性在子類中變為private;
  使用protected繼承,父類的protected和public屬性在子類中變為protected;
  使用public繼承,父類中的protected和public屬性不發生改變;

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

淺析C++:private、protected和public

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.