最近趁著春節假期空閒,找了本c++ primer
學了幾章,發現
c++
中的許多特性自己都不知道。其中巢狀類和區域性類感覺還是蠻有用的,簡單的寫寫他們的用法。
其實在c
語言中也有類似的用法,在乙個結構體中巢狀另乙個結構體,或者在乙個結構體中巢狀乙個
union
。我們還知道,
c 語言中被巢狀的結構體或
union
通常是匿名的。在
c++中也是可以的,我們可以在乙個類中巢狀另外乙個匿名類。不過,匿名類的成員函式只能在類的宣告中同時定義,因為這個類沒有名稱,我們沒法在外部指代它。
下面就是乙個類似的例子:
所謂區域性類,就是定義在乙個函式內部的類,這個類只能在這個函式內部使用。下面是個例子:
通常,巢狀類和區域性類的所有成員變數我們都會宣告為共有的。因為這兩種類只在很小的範圍內使用,沒有必要通過定義介面來隱藏內部的資訊。所以,可以把 class
改換成
struct
,這樣就可以不寫
public 了。
另外,多說一句,函式是不能巢狀的。比如下面的例子是無法編譯通過的。
int main()
; foo();
}
但是我們可以通過一些變通的方法來模擬出乙個區域性函式來。具體來說就是通過過載乙個類的operator
()方法來模擬乙個函式呼叫,下面給個例子:
C 之巢狀類和區域性類
一 1.概念 巢狀類 在乙個類中定義另乙個類,2.特點 從作用域的角度看,巢狀類被隱藏在外圍類之中,該類名只能在外圍類之中,該類名只能在外圍類中使用,如果在外圍類的作用域使用該類名,需要加名字限定。巢狀類中的成員函式可以在它的類外定義。巢狀類的成員函式對外圍類的成員函式沒有訪問許可權,反之亦然。巢狀...
C 區域性類和巢狀類
如果巢狀型別和其外部型別之間的關係需要成員可訪問性語義,需要使用c 巢狀類,巢狀型別不應針對其宣告型別以外的型別執行任務,而c 區域性類允許類 結構和介面被分成多個小塊兒並儲存在不同的原始檔中,這樣的實現很容易開發和維護。c 區域性類 在乙個函式體內定義的類稱為區域性類。區域性類中只能使用它的外圍作...
區域性類和巢狀類
區域性類在乙個函式體內定義的類稱為區域性類。區域性類中只能使用它的外圍作用域中的物件和函式進行聯絡,因為外圍作用域中的變數與該局部類的物件無關。在定義區域性類時需要注意 區域性類中不能說明靜態成員函式,並且所有成員函式都必須定義在類體內。在實踐中,區域性類是很少使用的。下面是乙個區域性類的例子。in...