C 中的巢狀類和區域性類

2021-06-28 19:01:37 字數 1525 閱讀 8984

最近趁著春節假期空閒,找了本c++ primer 

學了幾章,發現

c++ 

中的許多特性自己都不知道。其中巢狀類和區域性類感覺還是蠻有用的,簡單的寫寫他們的用法。

其實在c

語言中也有類似的用法,在乙個結構體中巢狀另乙個結構體,或者在乙個結構體中巢狀乙個

union 

。我們還知道,

c 語言中被巢狀的結構體或

union 

通常是匿名的。在

c++中也是可以的,我們可以在乙個類中巢狀另外乙個匿名類。不過,匿名類的成員函式只能在類的宣告中同時定義,因為這個類沒有名稱,我們沒法在外部指代它。

下面就是乙個類似的例子:

所謂區域性類,就是定義在乙個函式內部的類,這個類只能在這個函式內部使用。下面是個例子:

通常,巢狀類和區域性類的所有成員變數我們都會宣告為共有的。因為這兩種類只在很小的範圍內使用,沒有必要通過定義介面來隱藏內部的資訊。所以,可以把 class 

改換成 

struct

,這樣就可以不寫

public 了。

另外,多說一句,函式是不能巢狀的。比如下面的例子是無法編譯通過的。

int main()

; foo();

}

但是我們可以通過一些變通的方法來模擬出乙個區域性函式來。具體來說就是通過過載乙個類的operator

()方法來模擬乙個函式呼叫,下面給個例子:

C 之巢狀類和區域性類

一 1.概念 巢狀類 在乙個類中定義另乙個類,2.特點 從作用域的角度看,巢狀類被隱藏在外圍類之中,該類名只能在外圍類之中,該類名只能在外圍類中使用,如果在外圍類的作用域使用該類名,需要加名字限定。巢狀類中的成員函式可以在它的類外定義。巢狀類的成員函式對外圍類的成員函式沒有訪問許可權,反之亦然。巢狀...

C 區域性類和巢狀類

如果巢狀型別和其外部型別之間的關係需要成員可訪問性語義,需要使用c 巢狀類,巢狀型別不應針對其宣告型別以外的型別執行任務,而c 區域性類允許類 結構和介面被分成多個小塊兒並儲存在不同的原始檔中,這樣的實現很容易開發和維護。c 區域性類 在乙個函式體內定義的類稱為區域性類。區域性類中只能使用它的外圍作...

區域性類和巢狀類

區域性類在乙個函式體內定義的類稱為區域性類。區域性類中只能使用它的外圍作用域中的物件和函式進行聯絡,因為外圍作用域中的變數與該局部類的物件無關。在定義區域性類時需要注意 區域性類中不能說明靜態成員函式,並且所有成員函式都必須定義在類體內。在實踐中,區域性類是很少使用的。下面是乙個區域性類的例子。in...