c 類struct和class區別,友元

2021-08-14 08:25:37 字數 1543 閱讀 8466

說明:只是學習c++過程中的個人記錄,同時分享給大學,萬一有人用到了呢,

1.訪問控制與封裝

c++使用訪問說明符加強類的封裝性:

public:定義在public說明符之後的成員在整個程式內可被訪問,public成員定義類的介面。(一般建構函式和部分成員函式在此後面)

private:定義在private說明符之後的成員可以被類的成員函式訪問,但不能被使用該類的**訪問。(一般資料成員和作為實現部分的函式在此後面)

class sales_data 

private:

std::string bookno;

unsigned sold = 0;

};

說明:(1)乙個類可以包含0個或多個說明符。

(2)對某乙個訪問說明符出現多少次沒有嚴格限制。

(3)每個訪問說明符有效範圍直到下乙個訪問說明符出現或者類的結尾處。

2.class與struct區別

使用class,struct都可以定義類,二者的區別就是:

struct:在第乙個訪問說明符之前的成員是public的;

class:在第乙個訪問說明符之前的成員是private的.

3.友元

類可以允許其他類或者函式訪問它的非公有成員,方法是令其他類或者函式成為它的友元。

想把乙個函式作為友元,只需增加一條以friend關鍵字開始的函式宣告即可:

class sales_data 

private:

std::string bookno;

unsigned sold = 0;

};

說明:1.友元宣告只能出現在類定義的內部,但是在類內出現的具體位置不限。一般來說,最好在類定義開始或結束前的位置集中宣告友元。

2.友元的宣告僅僅指定了訪問的許可權,而非乙個通常意義上的函式宣告。如果我們希望類的使用者呼叫某個友元函式,則需要在友元宣告之外再專門對函式進行一次宣告。

3.為了使友元對類的使用者可見,對於2中說的宣告一般與類本身放置在同乙個標頭檔案中(類的外部)。

4.乙個類可以把其他類或其他類的成員函式定義成友元。(則這個其他類的成員函式可以訪問這個類包括非公有成員在內的所有成員。)

5.友元關係不存在傳遞性。

6.如果乙個類想把一組過載函式宣告成它的友元,那麼它需要對這組函式中的每乙個分別宣告。

7.友元的宣告的作用是影響訪問許可權,它本身並非普通意義上的宣告。(下面乙個例子很好的解釋這個)

struct x 

x() //錯誤,f還沒有宣告

void g();

void h();

};void x::g() { return f();) //錯誤,f還沒有被宣告。

void f(); //宣告定義在x中的f函式

void x::h() //正確,現在f的宣告在作用域了

(如有錯誤,望批評指正。謝謝。)

Swift中 Class和Struct的區別

1.記憶體管理方式不一樣,類引用型別,分配在堆上。結構體值型別,分配在棧上。2.類,有析構。結構體不能有析構,playground中測試直接卡死。3.結構體建構函式,會自動生成帶引數的構造器。類不會對有初始化賦值的屬性,生成帶引數的構造器。2.類有繼承特性,結構體沒有繼承特性,自然也不存在對成員屬性...

C 類class和結構體struct區別

參考改編自 c 語言繼承了c語言的struct,並且加以擴充。在c語言中struct是只能定義資料成員,而不能定義成員函式的。而在c 中,struct類似於class,在其中既可以定義資料成員,又可以定義成員函式。在c 中,struct與class基本是通用的,唯一不同的是如果使用class關鍵字,...

C 的類(Class)與結構(Struct)

在 c 中,結構是值型別資料結構。它使得乙個單一變數可以儲存各種資料型別的相關資料。struct關鍵字用於建立結構。結構是用來代表乙個記錄。假設您想跟蹤圖書館中書的動態。您可能想跟蹤每本書的以下屬性 為了定義乙個結構,您必須使用 struct 語句。struct 語句為程式定義了乙個帶有多個成員的新...