C 中,類的protected究竟有什麼作用

2021-05-13 22:42:19 字數 5654 閱讀 7747

1樓:可以叫我表哥

protected專門就是為繼承(子類)設計的 用public繼承,基類所有的訪問標識在子類不變, protected還是protected 。

c++程式設計思想中是這麼說的,public意味著隨後的定義對所有人都適用;private意味著除了該型別的建立者和該型別的內部成員函式之外,任何人都無法訪問這些定義;而protected是繼承的類可以訪問protected的成員,但不能訪問private的成員。

2樓:匿名使用者

- 宣告 private protected public

繼承private x x x

protected x o o

public x o o

類外呼叫 x x o

由上圖可見protected和public的區別:

在類外呼叫時,可以呼叫public成員,但是不能呼叫protected成員

也就這一個區別了。

3樓:趕緊擼毅管

錯了,不管何種繼承,基類的private成員派生類都無法訪問,當然也就出現了protected成員,集合了public成員(對派生類) 和 private成員(對外部訪問)的特點。

4樓:匿名使用者

protected成員

被公有繼承時,在你派生的這個類的內部成員中,能夠訪問。

比如class a

;class b : public a

//你可以在派生類b中訪問到父類a的成員n。

~b(){}

};但是你不能在類的外部訪問到父類的保護成員n。

比如下面的**就是錯誤的:

b x;

x.n = 1;

5樓:匿名使用者

c/c++

關鍵字protected關鍵字(c++和c#)

具有protected訪問控制級別的成員是半公開的,外界無法直接訪問這個控制級別的成員,但是派生類的base指標(在c++中也可用引用訪問)可以獲得訪問能力。protected與private基本相似,只有在繼承時有較大的區別。繼承的類可以訪問protected成員,但是不能訪問private成員。

以下是msdn提供的c# 中protected關鍵字的參考資料。

protected 關鍵字是一個成員訪問修飾符。受保護成員在它的類中可訪問並且可由派生類訪問。有關 protected 與其他訪問修飾符的比較,請參見可訪問性級別。

僅當訪問通過派生類型別發生時,基類的受保護成員在派生類中才是可訪問的。例如,請看以下**段:

// protected_keyword.csusing system;

class a

class b : a

}語句 a.x =10 將生成錯誤,因為 a 不是從 b 派生的。

結構成員無法受保護,因為無法繼承結構。

示例在此示例中,類 derivedpoint 從 point 派生;因此,可以從該派生類直接訪問基類的受保護成員。

// protected_keyword_2.cs

using system;

class point

class derivedpoint: point

, y = ", dp.x, dp.y); }}

輸出x = 10, y = 15

6樓:匿名使用者

起保護作用,protected只有繼承的類才可以訪問

c++中,類的protected究竟有什麼作用?

7樓:匿名使用者

- 宣告 private protected public

繼承private x x x

protected x o o

public x o o

類外呼叫 x x o

由上圖可見protected和public的區別:

在類外呼叫時,可以呼叫public成員,但是不能呼叫protected成員

也就這一個區別了。

c++類中的protected什麼時候用

8樓:匿名使用者

protected,主要是介於public和private之間的一種針對繼續關係而來的設計,一般很少用到

1.public繼承:基類public成員,protected成員,private成員的訪問屬性在派生類中分別變成:public, protected, private

2.protected繼承:基類public成員,protected成員,private成員的訪問屬性在派生類中分別變成:protected, protected, private

3.private繼承:基類public成員,protected成員,private成員的訪問屬性在派生類中分別變成:private, private, private

但無論哪種繼承方式,上面兩點都沒有改變:

1.private成員只能被本類成員(類內)和友元訪問,不能被派生類訪問;

2.protected成員可以被派生類(類內)訪問。

9樓:小呆瓜

類成員或者繼承的時候用到

10樓:匿名使用者

說實話,我做開發很多年了,基本很少用到。用的最多的還是public。

c++類的protected與private有何區別

11樓:兄弟連教育

這兩個是訪問類中成員許可權的限制符.在類外如果想使用類中的成員,只能直接使用public型別的,protected和private都是不能訪問的,對於類外使用而言,這兩個是完全相同的.

但是在基類的派生類中,可以直接訪問繼承而來的protected成員,但是不能訪問private限制的成員.所以在派生類中,可以訪問基類繼承而來的public和proected兩種型別的成員.在public公有派生下,繼承而來的成員訪問許可權不變.

protected派生下,public和protected都變成protected,private派生下,所有的繼承下來都是private了.

c++中的類究竟有什麼用?

12樓:匿名使用者

類是絕對重要的,這個問題初學時不要問,就像當初你明明可以用漢語好好交流,為什麼要學英語。只有你要與來外交流時才知道其重要性!

13樓:匿名使用者

工業革命的標誌是:蒸汽機,電等,軟體革命的標誌是類。

14樓:匿名使用者

在物件導向的程式設計中,有經常接觸類、物件等專業名詞;到底什麼是類、什麼是物件呢?在程式又是怎樣運用呢?類是物件導向程式設計的核心,它實際是一種新的資料型別,也是實現抽象型別的工具,因為類是通過抽象資料型別的方法來實現的一種資料型別。

類是對某一類物件的抽象;而物件是某一種類的例項,因此,類和物件是密切相關的。沒有脫離物件的類,也沒有不依賴於類的物件。

什麼是類

類是一種複雜的資料型別,它是將不同型別的資料和與這些資料相關的操作封裝在一起的集合體。這有點像c語言中的結構,唯一不同的就是結構沒有定義所說的「資料相關的操作」,「資料相關的操作」就是我們平常經常看到的「方法」,因此,類具有更高的抽象性,類中的資料具有隱藏性,類還具有封裝性。

類的結構(也即類的組成)是用來確定一類物件的行為的,而這些行為是通過類的內部資料結構和相關的操作來確定的。這些行為是通過一種操作介面來描述的(也即平時我們所看到的類的成員函式),使用者只關心的是介面的功能(也就是我們只關心類的各個成員函式的功能),對它是如何實現的並不感興趣。而操作介面又被稱為這類物件向其他物件所提供的服務。

類的定義格式

類的定義格式一般地分為說明部分和實現部分。說明部分是用來說明該類中的成員,包含資料成員的說明和成員函式的說明。成員函式是用來對資料成員進行操作的,又稱為「方法」。

實現部分是用來對成員函式的定義。概括說來,說明部分將告訴使用者「幹什麼」,而實現部分是告訴使用者「怎麼幹」。

類的一般定義格式如下:

class 《類名》

;《各個成員函式的實現》

下面簡單地對上面的格式進行說明:class是定義類的關鍵字,《類名》是種識別符號,通常用t字母開始的字串作為類名。一對花括號內是類的說明部分(包括前面的類頭)說明該類的成員。

類的成員包含資料成員和成員函式兩部分。從訪問許可權上來分,類的成員又分為:公有的(public)、私有的(private)和保護的(protected)三類。

公有的成員用public來說明,公有部分往往是一些操作(即成員函式),它是提供給使用者的介面功能。這部分成員可以在程式中引用。私有的成員用private來說明,私有部分通常是一些資料成員,這些成員是用來描述該類中的物件的屬性的,使用者是無法訪問它們的,只有成員函式或經特殊說明的函式才可以引用它們,它們是被用來隱藏的部分。

保護類(protected)將在以後介紹。

關鍵字public,private和protected被稱為訪問許可權修飾符或訪問控制修飾符。它們在類體內(即一對花括號內)出現的先後順序無關,並且允許多次出現,用它們來說明類成員的訪問許可權。

其中,《各個成員函式的實現》是類定義中的實現部分,這部分包含所有在類體內說明的函式的定義。如果一個成員函式的類體內定義了,實現部分將不出現。如果所有的成員函式都在類體內定義,則實現部分可以省略。

下面給出一個日期類定義的例子:

class tdate

;//類的實現部分

void tdate::setdate(int y, int m, int d)

int tdate::isleapyear()

void tdate::print();

這裡出現的作用域運算子::是用來標識某個成員函式是屬於哪個類的。

該類的定義還可以如下所示:

class tdate

int isleapyear()

void print()

private:

int yeay, month, day;

}這樣對成員函式的實現(即函式的定義)都寫在了類體內,因此類的實現部分被省略了。如果成員函式定義在類體外,則在函式頭的前面要加上該函式所屬類的標識,這時使用作用域運算子::。

定義類時應注意的事項

1、在類體中不允許對所定義的資料成員進行初始化。

2、類中的資料成員的型別可以是任意的,包含整型、浮點型、字元型、陣列、指標和引用等。也可以是物件。另一個類的物件,可以作該類的成員,但是自身類的物件是不可以的,而自身類的指標或引用又是可以的。

當一個類的物件用為這個類的成員時,如果另一個類的的定義在後,需要提前說明。

3、一般地,在類體內先說明公有成員,它們是使用者所關心的,後說明私有成員,它們是使用者不感興趣的。在說明資料成員時,一般按資料成員的型別大小,由小至大說明,這樣可提高時空利用率。

4、經常習慣地將類定義的說明部分或者整個定義部分(包含實現部分)放到一個標頭檔案中。

C中,基類protected能給子類直接呼叫

公有繼承不改變基類成員的屬性,也就是說基類的protected成員在子類中還是protected屬性。而類的物件是不能訪問protected成員的,但類的成員函式是能訪問protected成員的。所以,基類的成員函式能呼叫自己的protected成員 其物件不能 子類的成員函式也能呼叫基類的prot...

C 中類怎樣定義,使用,C 中如果要用的類定義在使用之後,該怎樣宣告?

類的定義格式一般地分為說明部分和實現部分。說明部分是用來說明該類中的成員,包含資料成員的說明和成員函式的說明。成員函式是用來對資料成員進行操作的,又稱為 方法 實現部分是用來對成員函式的定義。概括說來,說明部分將告訴使用者 幹什麼 而實現部分是告訴使用者 怎麼幹 類的一般定義格式如下 class 類...

C 中CStringArray類的GetAt函式的作用

getat根據一個輸入引數 id 返回其對應的字串。c 這個詞在中國大陸的程式設計師圈子中通常被讀做 c加加 而西方的程式設計師通常讀做 c plus plus cpp 它是一種使用非常廣泛的計算機程式語言。c 是一種靜態資料型別檢查的 支援多重程式設計正規化的通用程式設計語言。它支援過程化程式設計...